luau/prototyping/Luau/RuntimeError/ToString.agda
ajeffrey@roblox.com c6c0097729 WIP
2022-02-24 10:43:04 -06:00

30 lines
1.5 KiB
Agda

{-# OPTIONS --rewriting #-}
{-# OPTIONS --allow-unsolved-metas #-}
module Luau.RuntimeError.ToString where
open import Agda.Builtin.Float using (primShowFloat)
open import FFI.Data.String using (String; _++_)
open import Luau.RuntimeError using (RuntimeErrorᴮ; RuntimeErrorᴱ; local; return; UnboundVariable; SEGV; app₁; app₂; block; bin₁; bin₂)
open import Luau.RuntimeType.ToString using (runtimeTypeToString)
open import Luau.Addr.ToString using (addrToString)
open import Luau.Syntax.ToString using (exprToString)
open import Luau.Var.ToString using (varToString)
open import Luau.Value.ToString using (valueToString)
open import Luau.Syntax using (name; _$_)
errToStringᴱ : {a H B} RuntimeErrorᴱ {a} H B String
errToStringᴮ : {a H B} RuntimeErrorᴮ {a} H B String
-- errToStringᴱ (UnboundVariable x) = "variable " ++ varToString x ++ " is unbound"
-- errToStringᴱ (SEGV a x) = "address " ++ addrToString a ++ " is unallocated"
-- errToStringᴱ (app₁ E) = errToStringᴱ E
-- errToStringᴱ (app₂ E) = errToStringᴱ E
-- errToStringᴱ (bin₁ E) = errToStringᴱ E
-- errToStringᴱ (bin₂ E) = errToStringᴱ E
-- errToStringᴱ (block b E) = errToStringᴮ E ++ "\n in call of function " ++ varToString (name b)
-- errToStringᴱ (TypeMismatch t v _) = "value " ++ valueToString v ++ " is not a " ++ runtimeTypeToString t
errToStringᴱ err = {!!}
errToStringᴮ (local x E) = errToStringᴱ E ++ "\n in definition of " ++ varToString (name x)
errToStringᴮ (return E) = errToStringᴱ E ++ "\n in return statement"