@@ -120,6 +120,7 @@ class ToIR a where
120120build :: (Name, Def) -> Idris (Name, LDecl)
121121build (n, d)
122122 = do i <- getIState
123+ traceUnused n
123124 case lookup n (idris_scprims i) of
124125 Just (ar, op) ->
125126 let args = map (\x -> MN x "op") [0..] in
@@ -169,10 +170,20 @@ instance ToIR (TT Name) where
169170 return t' -- TODO
170171 | (P (DCon t a) n _, args) <- unApply tm
171172 = irCon env t a n args
173+ | (P _ n _, args) <- unApply tm
174+ = do i <- get
175+ let unused = case lookupCtxt Nothing n (idris_callgraph i) of
176+ [CGInfo _ _ _ unusedpos] -> unusedpos
177+ _ -> []
178+ args' <- mapM (ir' env) args
179+ return (LApp False (LV (Glob n)) (mkUnused unused 0 args'))
172180 | (f, args) <- unApply tm
173181 = do f' <- ir' env f
174182 args' <- mapM (ir' env) args
175183 return (LApp False f' args')
184+ where mkUnused u i [] = []
185+ mkUnused u i (x : xs) | i `elem` u = LNothing : mkUnused u (i + 1) xs
186+ | otherwise = x : mkUnused u (i + 1) xs
176187 ir' env (P _ n _) = return $ LV (Glob n)
177188 ir' env (V i) | i < length env = return $ LV (Glob (env!!i))
178189 | otherwise = error $ "IR fail " ++ show i ++ " " ++ show tm
@@ -184,10 +195,11 @@ instance ToIR (TT Name) where
184195 = do sc' <- ir' (n : env) sc
185196 v' <- ir' env v
186197 return $ LLet n v' sc'
187− ir' env (Bind _ _ _) = return $ LConst (I 424242)
198+ ir' env (Bind _ _ _) = return $ LNothing
188199 ir' env (Proj t i) = do t' <- ir' env t
189200 return $ LProj t' i
190201 ir' env (Constant c) = return $ LConst c
202+ ir' env (Set _) = return $ LNothing
191203 ir' env _ = return $ LError "Impossible"
192204
193205 irCon env t arity n args