module Shared.Utils where
import qualified Ast.Types as AT
getLoc :: AT.Expr -> AT.SrcLoc
getLoc :: Expr -> SrcLoc
getLoc Expr
expr = case Expr
expr of
AT.Lit SrcLoc
loc Literal
_ -> SrcLoc
loc
AT.Var SrcLoc
loc String
_ Type
_ -> SrcLoc
loc
AT.StructAccess SrcLoc
loc Expr
_ Expr
_ -> SrcLoc
loc
AT.ArrayAccess SrcLoc
loc Expr
_ Expr
_ -> SrcLoc
loc
AT.UnaryOp SrcLoc
loc UnaryOperation
_ Expr
_ -> SrcLoc
loc
AT.Call SrcLoc
loc Expr
_ [Expr]
_ -> SrcLoc
loc
AT.If SrcLoc
loc Expr
_ Expr
_ Maybe Expr
_ -> SrcLoc
loc
AT.While SrcLoc
loc Expr
_ Expr
_ -> SrcLoc
loc
AT.From SrcLoc
loc Expr
_ Expr
_ Expr
_ Expr
_ Expr
_ -> SrcLoc
loc
AT.Return SrcLoc
loc Maybe Expr
_ -> SrcLoc
loc
AT.Break SrcLoc
loc -> SrcLoc
loc
AT.Continue SrcLoc
loc -> SrcLoc
loc
AT.Cast SrcLoc
loc Type
_ Expr
_ -> SrcLoc
loc
AT.Declaration SrcLoc
loc String
_ Type
_ Maybe Expr
_ -> SrcLoc
loc
AT.Assignment SrcLoc
loc Expr
_ Expr
_ -> SrcLoc
loc
AT.Op SrcLoc
loc Operation
_ Expr
_ Expr
_ -> SrcLoc
loc
AT.Function SrcLoc
loc String
_ Type
_ [String]
_ Expr
_ -> SrcLoc
loc
AT.ForeignFunction SrcLoc
loc String
_ Type
_ -> SrcLoc
loc
AT.Block [Expr]
exprs -> Expr -> SrcLoc
getLoc (Expr -> SrcLoc) -> Expr -> SrcLoc
forall a b. (a -> b) -> a -> b
$ [Expr] -> Expr
forall a. HasCallStack => [a] -> a
head [Expr]
exprs
AT.Assembly SrcLoc
loc AsmExpr
_ -> SrcLoc
loc