@@ -4,6 +4,7 @@ module Idris.Directives(directiveAction) where
44import Idris.AbsSyntax
55import Idris.ASTUtils
66import Idris.Imports
7+import Idris.Output (sendHighlighting)
78
89import Idris.Core.Evaluate
910import Idris.Core.TT
@@ -43,15 +44,24 @@ directiveAction (DDynamicLibs libs) = do added <- addDyLib libs
4344 Left lib -> addIBC (IBCDyLib (lib_name lib))
4445 Right msg -> fail $ msg
4546
46−directiveAction (DNameHint ty ns) = do ty' <- disambiguate ty
47− mapM_ (addNameHint ty') ns
48− mapM_ (\n -> addIBC (IBCNameHint (ty', n))) ns
49−
50−directiveAction (DErrorHandlers fn arg ns) = do fn' <- disambiguate fn
51− ns' <- mapM disambiguate ns
52− addFunctionErrorHandlers fn' arg ns'
53− mapM_ (addIBC .
54− IBCFunctionErrorHandler fn' arg) ns'
47+directiveAction (DNameHint ty tyFC ns) = do ty' <- disambiguate ty
48+ mapM_ (addNameHint ty' . fst) ns
49+ mapM_ (\n -> addIBC (IBCNameHint (ty', fst n))) ns
50+ sendHighlighting $
51+ [(tyFC, AnnName ty' Nothing Nothing Nothing)] ++
52+ map (\(n, fc) -> (fc, AnnBoundName n False)) ns
53+
54+directiveAction (DErrorHandlers fn nfc arg afc ns) =
55+ do fn' <- disambiguate fn
56+ ns' <- mapM (\(n, fc) -> do n' <- disambiguate n
57+ return (n', fc)) ns
58+ addFunctionErrorHandlers fn' arg (map fst ns')
59+ mapM_ (addIBC .
60+ IBCFunctionErrorHandler fn' arg . fst) ns'
61+ sendHighlighting $
62+ [(nfc, AnnName fn' Nothing Nothing Nothing),
63+ (afc, AnnBoundName arg False)] ++
64+ map (\(n, fc) -> (fc, AnnName n Nothing Nothing Nothing)) ns'
5565
5666directiveAction (DLanguage ext) = addLangExt ext
5767