@@ -16,7 +16,7 @@ import Idris.Core.TT
16import Idris.Core.Evaluate
16import Idris.Core.Evaluate
17import Idris.Core.Unify
17import Idris.Core.Unify
18import Idris.Core.ProofTerm (getProofTerm)
18import Idris.Core.ProofTerm (getProofTerm)
19−import Idris.Core.Typecheck (check, recheck, isType)
19+import Idris.Core.Typecheck (check, recheck, converts, isType)
20import Idris.Coverage (buildSCG, checkDeclTotality, genClauses, recoverableCoverage, validCoverageCase)
20import Idris.Coverage (buildSCG, checkDeclTotality, genClauses, recoverableCoverage, validCoverageCase)
21import Idris.ErrReverse (errReverse)
21import Idris.ErrReverse (errReverse)
22import Idris.ElabQuasiquote (extractUnquotes)
22import Idris.ElabQuasiquote (extractUnquotes)
@@ -1136,7 +1136,7 @@ elab ist info emode opts fn tm
1136 delayElab 10 $ do focus h
1136 delayElab 10 $ do focus h
1138 elab' ina fc t
1138 elab' ina fc t
1139− elab' ina fc (PRunElab fc' tm) =
1139+ elab' ina fc (PRunElab fc' tm ns) =
1140 do attack
1140 do attack
1141 n <- getNameFrom (sMN 0 "tacticScript")
1141 n <- getNameFrom (sMN 0 "tacticScript")
1142 n' <- getNameFrom (sMN 0 "tacticExpr")
1142 n' <- getNameFrom (sMN 0 "tacticExpr")
@@ -1149,7 +1149,7 @@ elab ist info emode opts fn tm
1150 elab' ina (Just fc') tm
1150 elab' ina (Just fc') tm
1151 env <- get_env
1151 env <- get_env
1152− runTactical ist (maybe fc' id fc) env (P Bound n' Erased)
1152+ runTactical ist (maybe fc' id fc) env (P Bound n' Erased) ns
1154 elab' ina fc x = fail $ "Unelaboratable syntactic form " ++ showTmImpls x
1154 elab' ina fc x = fail $ "Unelaboratable syntactic form " ++ showTmImpls x
@@ -1697,10 +1697,10 @@ case_ ind autoSolve ist fn tm = do
1697 when autoSolve solveAll
1697 when autoSolve solveAll
1700−runTactical :: IState -> FC -> Env -> Term -> ElabD ()
1700+runTactical :: IState -> FC -> Env -> Term -> [String] -> ElabD ()
1701−runTactical ist fc env tm = do tm' <- eval tm
1701+runTactical ist fc env tm ns = do tm' <- eval tm
1702− runTacTm tm'
1702+ runTacTm tm'
1703− return ()
1703+ return ()
1705 eval tm = do ctxt <- get_context
1705 eval tm = do ctxt <- get_context
1706 return $ normaliseAll ctxt env (finalise tm)
1706 return $ normaliseAll ctxt env (finalise tm)
@@ -1721,8 +1721,9 @@ runTactical ist fc env tm = do tm' <- eval tm
1721 let info = CaseInfo True True False -- TODO document and figure out
1721 let info = CaseInfo True True False -- TODO document and figure out
1722 clauses' <- forM clauses (\case
1722 clauses' <- forM clauses (\case
1723 RMkFunClause lhs rhs ->
1723 RMkFunClause lhs rhs ->
1724− do lhs' <- fmap fst . lift $ check ctxt [] lhs
1724+ do (lhs', lty) <- lift $ check ctxt [] lhs
1725− rhs' <- fmap fst . lift $ check ctxt [] rhs
1725+ (rhs', rty) <- lift $ check ctxt [] rhs
1726+ lift $ converts ctxt [] lty rty
1726 return $ Right (lhs', rhs')
1727 return $ Right (lhs', rhs')
1727 RMkImpossibleClause lhs ->
1728 RMkImpossibleClause lhs ->
1728 do lhs' <- fmap fst . lift $ check ctxt [] lhs
1729 do lhs' <- fmap fst . lift $ check ctxt [] lhs
@@ -1812,6 +1813,9 @@ runTactical ist fc env tm = do tm' <- eval tm
1812 | n == tacN "prim__SourceLocation", [] <- args
1813 | n == tacN "prim__SourceLocation", [] <- args
1813 = fmap fst . checkClosed $
1814 = fmap fst . checkClosed $
1814 reflectFC fc
1815 reflectFC fc
1816+ | n == tacN "prim__Namespace", [] <- args
1817+ = fmap fst . checkClosed $
1818+ rawList (RConstant StrType) (map (RConstant . Str) ns)
1815 | n == tacN "prim__Env", [] <- args
1819 | n == tacN "prim__Env", [] <- args
1816 = do env <- get_env
1820 = do env <- get_env
1817 fmap fst . checkClosed $ reflectEnv env
1821 fmap fst . checkClosed $ reflectEnv env
@@ -1960,7 +1964,7 @@ runTactical ist fc env tm = do tm' <- eval tm
1960 datatypes <- get_datatypes
1964 datatypes <- get_datatypes
1961 env <- get_env
1965 env <- get_env
1962 (_, ES (p, aux') _ _) <-
1966 (_, ES (p, aux') _ _) <-
1963− lift $ runElab aux (runTactical ist fc [] script)
1967+ lift $ runElab aux (runTactical ist fc [] script ns)
1964 (newProof recH ctxt datatypes goalTT)
1968 (newProof recH ctxt datatypes goalTT)
1965 let tm_out = getProofTerm (pterm p)
1969 let tm_out = getProofTerm (pterm p)
1966 updateAux $ const aux'
1970 updateAux $ const aux'