@@ -14,6 +14,8 @@ import Idris.Unlit
14import Idris.Providers
14import Idris.Providers
15import Paths_idris
15import Paths_idris
17+import Util.DynamicLinker
17import Core.CoreParser
19import Core.CoreParser
18import Core.TT
20import Core.TT
19import Core.Evaluate
21import Core.Evaluate
@@ -1486,6 +1488,15 @@ pDirective syn = try (do lchar '%'; reserved "lib"; lib <- strlit;
1486 putIState (i { default_total = tot }))])
1488 putIState (i { default_total = tot }))])
1487 <|> try (do lchar '%'; reserved "logging"; i <- natural;
1489 <|> try (do lchar '%'; reserved "logging"; i <- natural;
1488 return [PDirective (setLogLevel (fromInteger i))])
1490 return [PDirective (setLogLevel (fromInteger i))])
1491+ <|> try (do lchar '%'; reserved "dynamic"; lib <- strlit;
1492+ return [PDirective (do i <- getIState
1493+ handle <- lift $ tryLoadLib lib
1496+ fail $ "Could not load dynamic lib \"" ++ lib ++ "\""
1498+ do let libs = idris_dynamic_libs i
1499+ putIState $ i { idris_dynamic_libs = x:libs })])
1490pProvider :: SyntaxInfo -> IParser [PDecl]
1501pProvider :: SyntaxInfo -> IParser [PDecl]
1491pProvider syn = do lchar '%'; reserved "provide";
1502pProvider syn = do lchar '%'; reserved "provide";