add smoke tests
This commit is contained in:
@@ -168,6 +168,13 @@ parameters (ctx: Context)
|
||||
case lookup k' !(get) of
|
||||
Just (MkEntry name ty (Fn tm)) => unify l t !(vappSpine !(eval [] CBN tm) sp')
|
||||
_ => error ctx.fc "unify failed \{show t'} =?= \{show u'} [no Fn]\n env is \{show ctx.env} \{show $ map fst ctx.types}"
|
||||
|
||||
(VRef fc k def sp, u) => do
|
||||
debug "expand %ref \{k} =?= \{show u}"
|
||||
case lookup k !(get) of
|
||||
Just (MkEntry name ty (Fn tm)) => unify l !(vappSpine !(eval [] CBN tm) sp) u
|
||||
_ => error ctx.fc "unify failed \{show t'} [no Fn] =?= \{show u'}\n env is \{show ctx.env} \{show $ map fst ctx.types}"
|
||||
|
||||
-- REVIEW I'd like to quote this back, but we have l that aren't in the environment.
|
||||
_ => error ctx.fc "unify failed \{show t'} =?= \{show u'} \n env is \{show ctx.env} \{show $ map fst ctx.types}"
|
||||
where
|
||||
|
||||
13
src/Main.idr
13
src/Main.idr
@@ -24,6 +24,9 @@ import System
|
||||
import System.Directory
|
||||
import System.File
|
||||
|
||||
fail : String -> M ()
|
||||
fail msg = putStrLn msg >> exitFailure
|
||||
|
||||
dumpContext : TopContext -> M ()
|
||||
dumpContext top = do
|
||||
putStrLn "Context:"
|
||||
@@ -46,11 +49,11 @@ processFile fn = do
|
||||
| Left err => printLn err
|
||||
let toks = tokenise src
|
||||
let Right res = parse parseMod toks
|
||||
| Left y => putStrLn (showError src y)
|
||||
| Left y => fail (showError src y)
|
||||
putStrLn $ render 80 $ pretty res
|
||||
printLn "process Decls"
|
||||
Right _ <- tryError $ traverse_ processDecl (collectDecl res.decls)
|
||||
| Left y => putStrLn (showError src y)
|
||||
| Left y => fail (showError src y)
|
||||
|
||||
dumpContext !get
|
||||
dumpSource
|
||||
@@ -61,8 +64,6 @@ main' = do
|
||||
putStrLn "Args: \{show args}"
|
||||
let (_ :: files) = args
|
||||
| _ => putStrLn "Usage: newt foo.newt"
|
||||
-- Right files <- listDir "eg"
|
||||
-- | Left err => printLn err
|
||||
when ("-v" `elem` files) $ modify { verbose := True }
|
||||
traverse_ processFile (filter (".newt" `isSuffixOf`) files)
|
||||
|
||||
@@ -71,5 +72,7 @@ main = do
|
||||
-- we'll need to reset for each file, etc.
|
||||
ctx <- empty
|
||||
Right _ <- runEitherT $ runStateT ctx $ main'
|
||||
| Left (E (c, r) str) => putStrLn "ERROR at (\{show c}, \{show r}): \{show str}"
|
||||
| Left (E (c, r) str) => do
|
||||
putStrLn "ERROR at (\{show c}, \{show r}): \{show str}"
|
||||
exitFailure
|
||||
putStrLn "done"
|
||||
|
||||
Reference in New Issue
Block a user