@@ -1077,71 +1077,44 @@ Directive' ::= 'lib' CodeGen String_t
1078directive :: SyntaxInfo -> IdrisParser [PDecl]
1078directive :: SyntaxInfo -> IdrisParser [PDecl]
1079directive syn = do try (lchar '%' *> reserved "lib"); cgn <- codegen_; lib <- stringLiteral;
1079directive syn = do try (lchar '%' *> reserved "lib"); cgn <- codegen_; lib <- stringLiteral;
1080− return [PDirective (do addLib cgn lib
1080+ return [PDirective (DLib cgn lib)]
1081− addIBC (IBCLib cgn lib))]
1082 <|> do try (lchar '%' *> reserved "link"); cgn <- codegen_; obj <- stringLiteral;
1081 <|> do try (lchar '%' *> reserved "link"); cgn <- codegen_; obj <- stringLiteral;
1083− return [PDirective (do dirs <- allImportDirs
1082+ return [PDirective (DLink cgn obj)]
1084− o <- liftIO $ findInPath dirs obj
1085− addIBC (IBCObj cgn obj) -- just name, search on loading ibc
1086− addObjectFile cgn o)]
1087− <|> do try (lchar '%' *> reserved "flag"); cgn <- codegen_;
1083+ <|> do try (lchar '%' *> reserved "flag"); cgn <- codegen_; flag <- stringLiteral
1088− flag <- stringLiteral
1089− return [PDirective (do addIBC (IBCCGFlag cgn flag)
1084+ return [PDirective (DFlag cgn flag)]
1091 <|> do try (lchar '%' *> reserved "include"); cgn <- codegen_; hdr <- stringLiteral;
1085 <|> do try (lchar '%' *> reserved "include"); cgn <- codegen_; hdr <- stringLiteral;
1092− return [PDirective (do addHdr cgn hdr
1086+ return [PDirective (DInclude cgn hdr)]
1093− addIBC (IBCHeader cgn hdr))]
1094 <|> do try (lchar '%' *> reserved "hide"); n <- fnName
1087 <|> do try (lchar '%' *> reserved "hide"); n <- fnName
1095− return [PDirective (do setAccessibility n Hidden
1088+ return [PDirective (DHide n)]
1096− addIBC (IBCAccess n Hidden))]
1097 <|> do try (lchar '%' *> reserved "freeze"); n <- iName []
1089 <|> do try (lchar '%' *> reserved "freeze"); n <- iName []
1098− return [PDirective (do setAccessibility n Frozen
1090+ return [PDirective (DFreeze n)]
1099− addIBC (IBCAccess n Frozen))]
1100 <|> do try (lchar '%' *> reserved "access"); acc <- accessibility
1091 <|> do try (lchar '%' *> reserved "access"); acc <- accessibility
1101− return [PDirective (do i <- get
1092+ return [PDirective (DAccess acc)]
1102− put(i { default_access = acc }))]
1103 <|> do try (lchar '%' *> reserved "default"); tot <- totality
1093 <|> do try (lchar '%' *> reserved "default"); tot <- totality
1104 i <- get
1094 i <- get
1105 put (i { default_total = tot } )
1095 put (i { default_total = tot } )
1106− return [PDirective (do i <- get
1096+ return [PDirective (DDefault tot)]
1107− put(i { default_total = tot }))]
1108 <|> do try (lchar '%' *> reserved "logging"); i <- natural;
1097 <|> do try (lchar '%' *> reserved "logging"); i <- natural;
1109− return [PDirective (setLogLevel (fromInteger i))]
1098+ return [PDirective (DLogging i)]
1110 <|> do try (lchar '%' *> reserved "dynamic"); libs <- sepBy1 stringLiteral (lchar ',');
1099 <|> do try (lchar '%' *> reserved "dynamic"); libs <- sepBy1 stringLiteral (lchar ',');
1111− return [PDirective (do added <- addDyLib libs
1100+ return [PDirective (DDynamicLibs libs)]
1113− Left lib -> addIBC (IBCDyLib (lib_name lib))
1116 <|> do try (lchar '%' *> reserved "name")
1101 <|> do try (lchar '%' *> reserved "name")
1117 ty <- fnName
1102 ty <- fnName
1118 ns <- sepBy1 name (lchar ',')
1103 ns <- sepBy1 name (lchar ',')
1119− return [PDirective (do ty' <- disambiguate ty
1104+ return [PDirective (DNameHint ty ns)]
1120− mapM_ (addNameHint ty') ns
1121− mapM_ (\n -> addIBC (IBCNameHint (ty', n))) ns)]
1122 <|> do try (lchar '%' *> reserved "error_handlers")
1105 <|> do try (lchar '%' *> reserved "error_handlers")
1123 fn <- fnName
1106 fn <- fnName
1124 arg <- fnName
1107 arg <- fnName
1125 ns <- sepBy1 name (lchar ',')
1108 ns <- sepBy1 name (lchar ',')
1126− return [PDirective (do fn' <- disambiguate fn
1109+ return [PDirective (DErrorHandlers fn arg ns) ]
1127− ns' <- mapM disambiguate ns
1128− addFunctionErrorHandlers fn' arg ns'
1129− mapM_ (addIBC . IBCFunctionErrorHandler fn' arg) ns')]
1130 <|> do try (lchar '%' *> reserved "language"); ext <- pLangExt;
1110 <|> do try (lchar '%' *> reserved "language"); ext <- pLangExt;
1131− return [PDirective (addLangExt ext)]
1111+ return [PDirective (DLanguage ext)]
1132 <|> do fc <- getFC
1112 <|> do fc <- getFC
1133 try (lchar '%' *> reserved "used")
1113 try (lchar '%' *> reserved "used")
1134 fn <- fnName
1114 fn <- fnName
1135 arg <- iName []
1115 arg <- iName []
1136− return [PDirective (addUsedName fc fn arg)]
1116+ return [PDirective (DUsed fc fn arg)]
1138 <?> "directive"
1117 <?> "directive"
1139− where disambiguate :: Name -> Idris Name
1140− disambiguate n = do i <- getIState
1141− case lookupCtxtName n (idris_implicits i) of
1142− [(n', _)] -> return n'
1143− [] -> throwError (NoSuchVariable n)
1144− more -> throwError (CantResolveAlts (map fst more))
1146pLangExt :: IdrisParser LanguageExt
1119pLangExt :: IdrisParser LanguageExt
1147pLangExt = (reserved "TypeProviders" >> return TypeProviders)
1120pLangExt = (reserved "TypeProviders" >> return TypeProviders)