Allow setting logging mid term

Sometimes this makes debugging easier since the logging is more
localised.
This commit is contained in:
Edwin Brady 2020-03-30 22:55:08 +01:00
parent 6beb6aa7c0
commit 7ff1e6275f
8 changed files with 23 additions and 18 deletions

View File

@ -297,11 +297,13 @@ tail [] impossible
tail (x :: xs) = xs tail (x :: xs) = xs
||| Attempt to get the head of a list. If the list is empty, return `Nothing`. ||| Attempt to get the head of a list. If the list is empty, return `Nothing`.
export
head' : List a -> Maybe a head' : List a -> Maybe a
head' [] = Nothing head' [] = Nothing
head' (x::xs) = Just x head' (x::xs) = Just x
||| Attempt to get the tail of a list. If the list is empty, return `Nothing`. ||| Attempt to get the tail of a list. If the list is empty, return `Nothing`.
export
tail' : List a -> Maybe (List a) tail' : List a -> Maybe (List a)
tail' [] = Nothing tail' [] = Nothing
tail' (x::xs) = Just xs tail' (x::xs) = Just xs

View File

@ -524,11 +524,11 @@ searchType {vars} fc rigc defaults trying depth def checkdets top env target
-- Core (Term vars) -- Core (Term vars)
Core.Unify.search fc rigc defaults depth def top env Core.Unify.search fc rigc defaults depth def top env
= do defs <- get Ctxt = do defs <- get Ctxt
logTermNF 2 "Initial target: " env top logTermNF 3 "Initial target: " env top
log 2 $ "Running search with defaults " ++ show defaults log 3 $ "Running search with defaults " ++ show defaults
tm <- searchType fc rigc defaults [] depth def tm <- searchType fc rigc defaults [] depth def
True (abstractEnvType fc env top) env True (abstractEnvType fc env top) env
top top
logTermNF 2 "Result" env tm logTermNF 3 "Result" env tm
defs <- get Ctxt defs <- get Ctxt
pure tm pure tm

View File

@ -329,8 +329,8 @@ mutual
desugarB side ps (PApp fc (PRef fc (UN "rangeFrom")) start) desugarB side ps (PApp fc (PRef fc (UN "rangeFrom")) start)
Just n => Just n =>
desugarB side ps (PApp fc (PApp fc (PRef fc (UN "rangeFromThen")) start) n) desugarB side ps (PApp fc (PApp fc (PRef fc (UN "rangeFromThen")) start) n)
desugarB side ps (PUnifyLog fc tm) desugarB side ps (PUnifyLog fc lvl tm)
= pure $ IUnifyLog fc !(desugarB side ps tm) = pure $ IUnifyLog fc lvl !(desugarB side ps tm)
desugarUpdate : {auto s : Ref Syn SyntaxInfo} -> desugarUpdate : {auto s : Ref Syn SyntaxInfo} ->
{auto b : Ref Bang BangData} -> {auto b : Ref Bang BangData} ->

View File

@ -358,10 +358,11 @@ mutual
end <- location end <- location
pure (PIdiom (MkFC fname start end) e) pure (PIdiom (MkFC fname start end) e)
<|> do start <- location <|> do start <- location
symbol "%"; exactIdent "unifyLog" symbol "%"; exactIdent "logging"
lvl <- intLit
e <- expr pdef fname indents e <- expr pdef fname indents
end <- location end <- location
pure (PUnifyLog (MkFC fname start end) e) pure (PUnifyLog (MkFC fname start end) (cast lvl) e)
multiplicity : EmptyRule (Maybe Integer) multiplicity : EmptyRule (Maybe Integer)
multiplicity multiplicity

View File

@ -230,7 +230,7 @@ mutual
toPTerm p (IUnquote fc tm) = pure (PUnquote fc !(toPTerm argPrec tm)) toPTerm p (IUnquote fc tm) = pure (PUnquote fc !(toPTerm argPrec tm))
toPTerm p (IRunElab fc tm) = pure (PRunElab fc !(toPTerm argPrec tm)) toPTerm p (IRunElab fc tm) = pure (PRunElab fc !(toPTerm argPrec tm))
toPTerm p (IUnifyLog fc tm) = toPTerm p tm toPTerm p (IUnifyLog fc _ tm) = toPTerm p tm
toPTerm p (Implicit fc True) = pure (PImplicit fc) toPTerm p (Implicit fc True) = pure (PImplicit fc)
toPTerm p (Implicit fc False) = pure (PInfer fc) toPTerm p (Implicit fc False) = pure (PInfer fc)

View File

@ -92,7 +92,7 @@ mutual
PRangeStream : FC -> PTerm -> Maybe PTerm -> PTerm PRangeStream : FC -> PTerm -> Maybe PTerm -> PTerm
-- Debugging -- Debugging
PUnifyLog : FC -> PTerm -> PTerm PUnifyLog : FC -> Nat -> PTerm -> PTerm
-- TODO: 'with' disambiguation -- TODO: 'with' disambiguation
@ -485,7 +485,7 @@ mutual
= "[" ++ showPrec d start ++ " .. ]" = "[" ++ showPrec d start ++ " .. ]"
showPrec d (PRangeStream _ start (Just next)) showPrec d (PRangeStream _ start (Just next))
= "[" ++ showPrec d start ++ ", " ++ showPrec d next ++ " .. ]" = "[" ++ showPrec d start ++ ", " ++ showPrec d next ++ " .. ]"
showPrec d (PUnifyLog _ tm) = showPrec d tm showPrec d (PUnifyLog _ lvl tm) = showPrec d tm
public export public export
record IFaceInfo where record IFaceInfo where

View File

@ -5,6 +5,7 @@ import Core.Core
import Core.Env import Core.Env
import Core.Metadata import Core.Metadata
import Core.Normalise import Core.Normalise
import Core.Options
-- import Core.Reflect -- import Core.Reflect
import Core.Unify import Core.Unify
import Core.TT import Core.TT
@ -186,11 +187,12 @@ checkTerm rig elabinfo nest env (IType fc) exp
checkTerm rig elabinfo nest env (IHole fc str) exp checkTerm rig elabinfo nest env (IHole fc str) exp
= checkHole rig elabinfo nest env fc str exp = checkHole rig elabinfo nest env fc str exp
checkTerm rig elabinfo nest env (IUnifyLog fc tm) exp checkTerm rig elabinfo nest env (IUnifyLog fc n tm) exp
= do ust <- get UST = do opts <- getSession
put UST (record { logging = True } ust) let lvl = logLevel opts
setLogLevel n
r <- check rig elabinfo nest env tm exp r <- check rig elabinfo nest env tm exp
put UST ust setLogLevel lvl
pure r pure r
checkTerm rig elabinfo nest env (Implicit fc b) (Just gexpty) checkTerm rig elabinfo nest env (Implicit fc b) (Just gexpty)
= do nm <- genName "_" = do nm <- genName "_"

View File

@ -97,7 +97,7 @@ mutual
IType : FC -> RawImp IType : FC -> RawImp
IHole : FC -> String -> RawImp IHole : FC -> String -> RawImp
IUnifyLog : FC -> RawImp -> RawImp IUnifyLog : FC -> Nat -> RawImp -> RawImp
-- An implicit value, solved by unification, but which will also be -- An implicit value, solved by unification, but which will also be
-- bound (either as a pattern variable or a type variable) if unsolved -- bound (either as a pattern variable or a type variable) if unsolved
-- at the end of elaborator -- at the end of elaborator
@ -164,7 +164,7 @@ mutual
show (IRunElab fc tm) = "(%runelab " ++ show tm ++ ")" show (IRunElab fc tm) = "(%runelab " ++ show tm ++ ")"
show (IPrimVal fc c) = show c show (IPrimVal fc c) = show c
show (IHole _ x) = "?" ++ x show (IHole _ x) = "?" ++ x
show (IUnifyLog _ x) = "(%unifyLog " ++ show x ++ ")" show (IUnifyLog _ lvl x) = "(%logging " ++ show lvl ++ " " ++ show x ++ ")"
show (IType fc) = "%type" show (IType fc) = "%type"
show (Implicit fc True) = "_" show (Implicit fc True) = "_"
show (Implicit fc False) = "?" show (Implicit fc False) = "?"
@ -542,7 +542,7 @@ getFC (IRewrite x _ _) = x
getFC (ICoerced x _) = x getFC (ICoerced x _) = x
getFC (IPrimVal x _) = x getFC (IPrimVal x _) = x
getFC (IHole x _) = x getFC (IHole x _) = x
getFC (IUnifyLog x _) = x getFC (IUnifyLog x _ _) = x
getFC (IType x) = x getFC (IType x) = x
getFC (IBindVar x _) = x getFC (IBindVar x _) = x
getFC (IBindHere x _ _) = x getFC (IBindHere x _ _) = x
@ -641,7 +641,7 @@ mutual
= do tag 26; toBuf b fc = do tag 26; toBuf b fc
toBuf b (IHole fc y) toBuf b (IHole fc y)
= do tag 27; toBuf b fc; toBuf b y = do tag 27; toBuf b fc; toBuf b y
toBuf b (IUnifyLog fc x) = toBuf b x toBuf b (IUnifyLog fc lvl x) = toBuf b x
toBuf b (Implicit fc i) toBuf b (Implicit fc i)
= do tag 28; toBuf b fc; toBuf b i = do tag 28; toBuf b fc; toBuf b i