@@ -169,26 +169,26 @@ declared (PParams _ _ ds) = concatMap declared ds
169-- High level language terms
169-- High level language terms
171data PTerm = PQuote Raw
171data PTerm = PQuote Raw
172− | PRef Name
172+ | PRef FC Name
173 | PLam Name PTerm PTerm
173 | PLam Name PTerm PTerm
174 | PPi Plicity Name PTerm PTerm
174 | PPi Plicity Name PTerm PTerm
175 | PLet Name PTerm PTerm PTerm -- not implemented yet
175 | PLet Name PTerm PTerm PTerm -- not implemented yet
176− | PApp PTerm [PArg]
176+ | PApp FC PTerm [PArg]
177− | PTrue
177+ | PTrue FC
178− | PFalse
178+ | PFalse FC
179− | PPair PTerm PTerm
179+ | PPair FC PTerm PTerm
180 | PHidden PTerm -- irrelevant or hidden pattern
180 | PHidden PTerm -- irrelevant or hidden pattern
182 | PConstant Const
182 | PConstant Const
183 | Placeholder
183 | Placeholder
184 | PDoBlock [PDo]
184 | PDoBlock [PDo]
185− | PReturn
185+ | PReturn FC
186 | PMetavar Name
186 | PMetavar Name
187 | PElabError String -- error to report on elaboration
187 | PElabError String -- error to report on elaboration
189−data PDo = DoExp PTerm
189+data PDo = DoExp FC PTerm
190− | DoBind Name PTerm
190+ | DoBind FC Name PTerm
191− | DoLet Name PTerm
191+ | DoLet FC Name PTerm
193data PArg' t = PImp { pname :: Name, getTm :: t }
193data PArg' t = PImp { pname :: Name, getTm :: t }
194 | PExp { getTm :: t }
194 | PExp { getTm :: t }
@@ -261,7 +261,7 @@ getAll = map getTm
261showImp :: Bool -> PTerm -> String
261showImp :: Bool -> PTerm -> String
262showImp impl tm = se 10 tm where
262showImp impl tm = se 10 tm where
263 se p (PQuote r) = "![" ++ show r ++ "]"
263 se p (PQuote r) = "![" ++ show r ++ "]"
264− se p (PRef n) = show n
264+ se p (PRef _ n) = show n
265 se p (PLam n ty sc) = bracket p 2 $ "\\ " ++ show n ++ " => " ++ show sc
265 se p (PLam n ty sc) = bracket p 2 $ "\\ " ++ show n ++ " => " ++ show sc
266 se p (PPi Exp n ty sc)
266 se p (PPi Exp n ty sc)
267 | n `elem` allNamesIn sc = bracket p 2 $
267 | n `elem` allNamesIn sc = bracket p 2 $
@@ -272,20 +272,20 @@ showImp impl tm = se 10 tm where
272 | impl = bracket p 2 $ "{" ++ show n ++ " : " ++ se 10 ty ++
272 | impl = bracket p 2 $ "{" ++ show n ++ " : " ++ se 10 ty ++
273 "} -> " ++ se 10 sc
273 "} -> " ++ se 10 sc
274 | otherwise = se 10 sc
274 | otherwise = se 10 sc
275− se p (PApp (PRef f) [])
275+ se p (PApp _ (PRef _ f) [])
276 | not impl = show f
276 | not impl = show f
277− se p (PApp (PRef op@(UN [f:_])) args)
277+ se p (PApp _ (PRef _ op@(UN [f:_])) args)
278 | length (getExps args) == 2 && not impl && not (isAlpha f)
278 | length (getExps args) == 2 && not impl && not (isAlpha f)
279 = let [l, r] = getExps args in
279 = let [l, r] = getExps args in
280 bracket p 1 $ se 1 l ++ " " ++ show op ++ " " ++ se 0 r
280 bracket p 1 $ se 1 l ++ " " ++ show op ++ " " ++ se 0 r
281− se p (PApp f as)
281+ se p (PApp _ f as)
282 = let (imps, args) = (getImps as, getExps as) in
282 = let (imps, args) = (getImps as, getExps as) in
283 bracket p 1 $ se 1 f ++ (if impl then concatMap siArg imps else "")
283 bracket p 1 $ se 1 f ++ (if impl then concatMap siArg imps else "")
284 ++ concatMap seArg args
284 ++ concatMap seArg args
285 se p (PHidden tm) = "." ++ se 0 tm
285 se p (PHidden tm) = "." ++ se 0 tm
286− se p PTrue = "()"
286+ se p (PTrue _) = "()"
287− se p PFalse = "_|_"
287+ se p (PFalse _) = "_|_"
288− se p (PPair l r) = "(" ++ se 10 l ++ ", " ++ se 10 r ++ ")"
288+ se p (PPair _ l r) = "(" ++ se 10 l ++ ", " ++ se 10 r ++ ")"
289 se p PSet = "Set"
289 se p PSet = "Set"
290 se p (PConstant c) = show c
290 se p (PConstant c) = show c
291 se p (PMetavar n) = "?" ++ show n
291 se p (PMetavar n) = "?" ++ show n
@@ -300,27 +300,27 @@ showImp impl tm = se 10 tm where
300allNamesIn :: PTerm -> [Name]
300allNamesIn :: PTerm -> [Name]
301allNamesIn tm = nub $ ni [] tm
301allNamesIn tm = nub $ ni [] tm
303− ni env (PRef n)
303+ ni env (PRef _ n)
304 | not (n `elem` env) = [n]
304 | not (n `elem` env) = [n]
305− ni env (PApp f as) = ni env f ++ concatMap (ni env) (map getTm as)
305+ ni env (PApp _ f as) = ni env f ++ concatMap (ni env) (map getTm as)
306 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
306 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
307 ni env (PPi _ n ty sc) = ni env ty ++ ni (n:env) sc
307 ni env (PPi _ n ty sc) = ni env ty ++ ni (n:env) sc
308 ni env (PHidden tm) = ni env tm
308 ni env (PHidden tm) = ni env tm
309− ni env (PPair l r) = ni env l ++ ni env r
309+ ni env (PPair _ l r) = ni env l ++ ni env r
310 ni env _ = []
310 ni env _ = []
312namesIn :: IState -> PTerm -> [Name]
312namesIn :: IState -> PTerm -> [Name]
313namesIn ist tm = nub $ ni [] tm
313namesIn ist tm = nub $ ni [] tm
315− ni env (PRef n)
315+ ni env (PRef _ n)
316 | not (n `elem` env)
316 | not (n `elem` env)
317 = case lookupCtxt n (idris_implicits ist) of
317 = case lookupCtxt n (idris_implicits ist) of
318 Nothing -> [n]
318 Nothing -> [n]
320− ni env (PApp f as) = ni env f ++ concatMap (ni env) (map getTm as)
320+ ni env (PApp _ f as) = ni env f ++ concatMap (ni env) (map getTm as)
321 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
321 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
322 ni env (PPi _ n ty sc) = ni env ty ++ ni (n:env) sc
322 ni env (PPi _ n ty sc) = ni env ty ++ ni (n:env) sc
323− ni env (PPair l r) = ni env l ++ ni env r
323+ ni env (PPair _ l r) = ni env l ++ ni env r
324 ni env (PHidden tm) = ni env tm
324 ni env (PHidden tm) = ni env tm
325 ni env _ = []
325 ni env _ = []
@@ -333,10 +333,10 @@ inferCon = MN 0 "__infer"
333inferDecl = PDatadecl inferTy
333inferDecl = PDatadecl inferTy
335 [(inferCon, PPi Imp (MN 0 "A") PSet (
335 [(inferCon, PPi Imp (MN 0 "A") PSet (
336− PPi Exp (MN 0 "a") (PRef (MN 0 "A"))
336+ PPi Exp (MN 0 "a") (PRef bi (MN 0 "A"))
337− (PRef inferTy)), bi)]
337+ (PRef bi inferTy)), bi)]
339−infTerm t = PApp (PRef inferCon) [PImp (MN 0 "A") Placeholder, PExp t]
339+infTerm t = PApp bi (PRef bi inferCon) [PImp (MN 0 "A") Placeholder, PExp t]
340infP = P (TCon 0) inferTy (Set 0)
340infP = P (TCon 0) inferTy (Set 0)
342getInferTerm, getInferType :: Term -> Term
342getInferTerm, getInferType :: Term -> Term
@@ -353,7 +353,7 @@ getInferType (App (App _ ty) _) = ty
353unitTy = MN 0 "__Unit"
353unitTy = MN 0 "__Unit"
354unitCon = MN 0 "__II"
354unitCon = MN 0 "__II"
355unitDecl = PDatadecl unitTy PSet
355unitDecl = PDatadecl unitTy PSet
356− [(unitCon, PRef unitTy, bi)]
356+ [(unitCon, PRef bi unitTy, bi)]
358falseTy = MN 0 "__False"
358falseTy = MN 0 "__False"
359falseDecl = PDatadecl falseTy PSet []
359falseDecl = PDatadecl falseTy PSet []
@@ -363,10 +363,10 @@ pairCon = UN ["MkPair"] -- MN 0 "__MkPair"
363pairDecl = PDatadecl pairTy (piBind [(n "A", PSet), (n "B", PSet)] PSet)
363pairDecl = PDatadecl pairTy (piBind [(n "A", PSet), (n "B", PSet)] PSet)
364 [(pairCon, PPi Imp (n "A") PSet (
364 [(pairCon, PPi Imp (n "A") PSet (
365 PPi Imp (n "B") PSet (
365 PPi Imp (n "B") PSet (
366− PPi Exp (n "a") (PRef (n "A")) (
366+ PPi Exp (n "a") (PRef bi (n "A")) (
367− PPi Exp (n "c") (PRef (n "B"))
367+ PPi Exp (n "c") (PRef bi (n "B"))
368− (PApp (PRef pairTy) [PExp (PRef (n "A")),
368+ (PApp bi (PRef bi pairTy) [PExp (PRef bi (n "A")),
369− PExp (PRef (n "B"))])))), bi)]
369+ PExp (PRef bi (n "B"))])))), bi)]
370 where n a = MN 0 a
370 where n a = MN 0 a
372piBind :: [(Name, PTerm)] -> PTerm -> PTerm
372piBind :: [(Name, PTerm)] -> PTerm -> PTerm
@@ -388,7 +388,7 @@ implicitise syn ist tm
388 then (tm, reverse declimps)
388 then (tm, reverse declimps)
389 else implicitise syn ist (pibind uvars ns tm)
389 else implicitise syn ist (pibind uvars ns tm)
391− imps top env (PApp f as)
391+ imps top env (PApp _ f as)
392 = do (decls, ns) <- get
392 = do (decls, ns) <- get
393 let isn = concatMap (namesIn ist) (map getTm as)
393 let isn = concatMap (namesIn ist) (map getTm as)
394 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
394 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
@@ -399,12 +399,12 @@ implicitise syn ist tm
399 imps True (n:env) sc
399 imps True (n:env) sc
400 imps top env (PPi Exp n ty sc)
400 imps top env (PPi Exp n ty sc)
401 = do let isn = (namesIn ist ty ++ case sc of
401 = do let isn = (namesIn ist ty ++ case sc of
402− (PRef x) -> namesIn ist sc
402+ (PRef _ x) -> namesIn ist sc
403 _ -> []) \\ [n]
403 _ -> []) \\ [n]
404 (decls, ns) <- get -- ignore decls in HO types
404 (decls, ns) <- get -- ignore decls in HO types
405 put (PExp ty : decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
405 put (PExp ty : decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
406 imps True (n:env) sc
406 imps True (n:env) sc
407− imps top env (PPair l r)
407+ imps top env (PPair _ l r)
408 = do (decls, ns) <- get
408 = do (decls, ns) <- get
409 put (decls, nub (ns ++ namesIn ist l ++ namesIn ist r))
409 put (decls, nub (ns ++ namesIn ist l ++ namesIn ist r))
410 imps top env (PLam n ty sc)
410 imps top env (PLam n ty sc)
@@ -423,13 +423,13 @@ implicitise syn ist tm
423addImpl :: IState -> PTerm -> PTerm
423addImpl :: IState -> PTerm -> PTerm
424addImpl ist ptm = ai [] ptm
424addImpl ist ptm = ai [] ptm
426− ai env (PRef f) = aiFn env (PRef f) []
426+ ai env (PRef fc f) = aiFn fc env (PRef fc f) []
427− ai env (PApp (PRef f) as)
427+ ai env (PApp fc (PRef _ f) as)
428 = let as' = map (fmap (ai env)) as in
428 = let as' = map (fmap (ai env)) as in
429− aiFn env (PRef f) as'
429+ aiFn fc env (PRef fc f) as'
430− ai env (PApp f as) = let f' = ai env f
430+ ai env (PApp fc f as) = let f' = ai env f
431 as' = map (fmap (ai env)) as in
431 as' = map (fmap (ai env)) as in
432− aiFn env f' as'
432+ aiFn fc env f' as'
433 ai env (PLam n ty sc) = let ty' = ai env ty
433 ai env (PLam n ty sc) = let ty' = ai env ty
434 sc' = ai (n:env) sc in
434 sc' = ai (n:env) sc in
435 PLam n ty' sc'
435 PLam n ty' sc'
@@ -439,18 +439,18 @@ addImpl ist ptm = ai [] ptm
439 ai env (PHidden tm) = PHidden (ai env tm)
439 ai env (PHidden tm) = PHidden (ai env tm)
440 ai env tm = tm
440 ai env tm = tm
442− aiFn env (PRef f) as | not (f `elem` env)
442+ aiFn _ env (PRef fc f) as | not (f `elem` env)
443 = case lookupCtxt f (idris_implicits ist) of
443 = case lookupCtxt f (idris_implicits ist) of
444− Just ns -> pApp (length ns) (PRef f) (insertImpl ns as)
444+ Just ns -> pApp fc (length ns) (PRef fc f) (insertImpl ns as)
445− Nothing -> pApp 1 (PRef f) as
445+ Nothing -> pApp fc 1 (PRef fc f) as
446− aiFn env f as = pApp 1 f as
446+ aiFn fc env f as = pApp fc 1 f as
448− pApp a f [] = f
448+ pApp fc a f [] = f
449− pApp a f as = let rest = drop a as in
449+ pApp fc a f as = let rest = drop a as in
450− appRest (PApp f (take a as)) rest
450+ appRest fc (PApp fc f (take a as)) rest
452− appRest f [] = f
452+ appRest fc f [] = f
453− appRest f (a : as) = appRest (PApp f [a]) as
453+ appRest fc f (a : as) = appRest fc (PApp fc f [a]) as
455 insertImpl :: [PArg] -> [PArg] -> [PArg]
455 insertImpl :: [PArg] -> [PArg] -> [PArg]
456 insertImpl (PExp ty : ps) (PExp tm : given) =
456 insertImpl (PExp ty : ps) (PExp tm : given) =