@@ -458,41 +458,42 @@ parseTarget _ = error "unknown target" -- FIXME: partial function
458458
459459parseArgs :: [String] -> [Opt]
460460parseArgs [] = []
461−parseArgs ("--quiet":ns) = Quiet : (parseArgs ns)
462−parseArgs ("--log":lvl:ns) = OLogging (read lvl) : (parseArgs ns)
463−parseArgs ("--noprelude":ns) = NoPrelude : (parseArgs ns)
464−parseArgs ("--check":ns) = NoREPL : (parseArgs ns)
465−parseArgs ("-o":n:ns) = NoREPL : Output n : (parseArgs ns)
466−parseArgs ("-no":n:ns) = NoREPL : NewOutput n : (parseArgs ns)
467−parseArgs ("--typecase":ns) = TypeCase : (parseArgs ns)
468−parseArgs ("--typeintype":ns) = TypeInType : (parseArgs ns)
469−parseArgs ("--total":ns) = DefaultTotal : (parseArgs ns)
470−parseArgs ("--partial":ns) = DefaultPartial : (parseArgs ns)
471−parseArgs ("--warnpartial":ns) = WarnPartial : (parseArgs ns)
472−parseArgs ("--nocoverage":ns) = NoCoverage : (parseArgs ns)
473−parseArgs ("--errorcontext":ns) = ErrContext : (parseArgs ns)
474−parseArgs ("--help":ns) = Usage : (parseArgs ns)
475−parseArgs ("--link":ns) = ShowLibs : (parseArgs ns)
476−parseArgs ("--libdir":ns) = ShowLibdir : (parseArgs ns)
477−parseArgs ("--include":ns) = ShowIncs : (parseArgs ns)
478−parseArgs ("--version":ns) = Ver : (parseArgs ns)
479−parseArgs ("--verbose":ns) = Verbose : (parseArgs ns)
480−parseArgs ("--ibcsubdir":n:ns) = IBCSubDir n : (parseArgs ns)
481−parseArgs ("-i":n:ns) = ImportDir n : (parseArgs ns)
482−parseArgs ("--warn":ns) = WarnOnly : (parseArgs ns)
483−parseArgs ("--package":n:ns) = Pkg n : (parseArgs ns)
484−parseArgs ("-p":n:ns) = Pkg n : (parseArgs ns)
485−parseArgs ("--build":n:ns) = PkgBuild n : (parseArgs ns)
486−parseArgs ("--install":n:ns) = PkgInstall n : (parseArgs ns)
487−parseArgs ("--clean":n:ns) = PkgClean n : (parseArgs ns)
488−parseArgs ("--bytecode":n:ns) = NoREPL : BCAsm n : (parseArgs ns)
489−parseArgs ("--fovm":n:ns) = NoREPL : FOVM n : (parseArgs ns)
490−parseArgs ("-S":ns) = OutputTy Raw : (parseArgs ns)
491−parseArgs ("-c":ns) = OutputTy Object : (parseArgs ns)
492−parseArgs ("--dumpdefuns":n:ns) = DumpDefun n : (parseArgs ns)
493−parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
494−parseArgs ("--target":n:ns) = UseTarget (parseTarget n) : (parseArgs ns)
495−parseArgs (n:ns) = Filename n : (parseArgs ns)
461+parseArgs ("--quiet":ns) = Quiet : (parseArgs ns)
462+parseArgs ("--log":lvl:ns) = OLogging (read lvl) : (parseArgs ns)
463+parseArgs ("--noprelude":ns) = NoPrelude : (parseArgs ns)
464+parseArgs ("--check":ns) = NoREPL : (parseArgs ns)
465+parseArgs ("-o":n:ns) = NoREPL : Output n : (parseArgs ns)
466+parseArgs ("-no":n:ns) = NoREPL : NewOutput n : (parseArgs ns)
467+parseArgs ("--typecase":ns) = TypeCase : (parseArgs ns)
468+parseArgs ("--typeintype":ns) = TypeInType : (parseArgs ns)
469+parseArgs ("--total":ns) = DefaultTotal : (parseArgs ns)
470+parseArgs ("--partial":ns) = DefaultPartial : (parseArgs ns)
471+parseArgs ("--warnpartial":ns) = WarnPartial : (parseArgs ns)
472+parseArgs ("--nocoverage":ns) = NoCoverage : (parseArgs ns)
473+parseArgs ("--errorcontext":ns) = ErrContext : (parseArgs ns)
474+parseArgs ("--help":ns) = Usage : (parseArgs ns)
475+parseArgs ("--link":ns) = ShowLibs : (parseArgs ns)
476+parseArgs ("--libdir":ns) = ShowLibdir : (parseArgs ns)
477+parseArgs ("--include":ns) = ShowIncs : (parseArgs ns)
478+parseArgs ("--version":ns) = Ver : (parseArgs ns)
479+parseArgs ("--verbose":ns) = Verbose : (parseArgs ns)
480+parseArgs ("--ibcsubdir":n:ns) = IBCSubDir n : (parseArgs ns)
481+parseArgs ("-i":n:ns) = ImportDir n : (parseArgs ns)
482+parseArgs ("--warn":ns) = WarnOnly : (parseArgs ns)
483+parseArgs ("--package":n:ns) = Pkg n : (parseArgs ns)
484+parseArgs ("-p":n:ns) = Pkg n : (parseArgs ns)
485+parseArgs ("--build":n:ns) = PkgBuild n : (parseArgs ns)
486+parseArgs ("--install":n:ns) = PkgInstall n : (parseArgs ns)
487+parseArgs ("--clean":n:ns) = PkgClean n : (parseArgs ns)
488+parseArgs ("--bytecode":n:ns) = NoREPL : BCAsm n : (parseArgs ns)
489+parseArgs ("--fovm":n:ns) = NoREPL : FOVM n : (parseArgs ns)
490+parseArgs ("-S":ns) = OutputTy Raw : (parseArgs ns)
491+parseArgs ("-c":ns) = OutputTy Object : (parseArgs ns)
492+parseArgs ("--dumpdefuns":n:ns) = DumpDefun n : (parseArgs ns)
493+parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
494+parseArgs ("--target":n:ns) = UseTarget (parseTarget n) : (parseArgs ns)
495+parseArgs ("-XTypeProviders":ns) = Extension TypeProviders : (parseArgs ns)
496+parseArgs (n:ns) = Filename n : (parseArgs ns)
496497
497498helphead =
498499 [ (["Command"], "Arguments", "Purpose", ""),
@@ -527,6 +528,7 @@ idrisMain opts =
527528 xs -> last xs
528529 when (DefaultTotal `elem` opts) $ do i <- getIState
529530 putIState (i { default_total = True })
531+ mapM_ addLangExt (opt getLanguageExt opts)
530532 setREPL runrepl
531533 setQuiet quiet
532534 setVerbose runrepl
@@ -626,6 +628,10 @@ getOutputTy :: Opt -> Maybe OutputType
626628getOutputTy (OutputTy t) = Just t
627629getOutputTy _ = Nothing
628630
631+getLanguageExt :: Opt -> Maybe LanguageExt
632+getLanguageExt (Extension e) = Just e
633+getLanguageExt _ = Nothing
634+
629635opt :: (Opt -> Maybe a) -> [Opt] -> [a]
630636opt = mapMaybe
631637