@@ -1019,8 +1019,11 @@ parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
1019parseArgs ("--codegen":n:ns) = UseCodegen (parseCodegen n) : (parseArgs ns)
1019parseArgs ("--codegen":n:ns) = UseCodegen (parseCodegen n) : (parseArgs ns)
1020parseArgs ["--exec"] = InterpretScript "Main.main" : []
1020parseArgs ["--exec"] = InterpretScript "Main.main" : []
1021parseArgs ("--exec":expr:ns) = InterpretScript expr : parseArgs ns
1021parseArgs ("--exec":expr:ns) = InterpretScript expr : parseArgs ns
1022+parseArgs (('-':'X':extName):ns) = case maybeRead extName of
1022−parseArgs ("-XTypeProviders":ns) = Extension TypeProviders : (parseArgs ns)
1023+ Just ext -> Extension ext : parseArgs ns
1023−parseArgs ("-XErrorReflection":ns) = Extension ErrorReflection : (parseArgs ns)
1024+ -- Not sure what to do for the Nothing case
1025+ Nothing -> error ("Unknown extension " ++ extName)
1026+ where maybeRead = fmap fst . listToMaybe . reads
1024parseArgs ("-O3":ns) = OptLevel 3 : parseArgs ns
1027parseArgs ("-O3":ns) = OptLevel 3 : parseArgs ns
1025parseArgs ("-O2":ns) = OptLevel 2 : parseArgs ns
1028parseArgs ("-O2":ns) = OptLevel 2 : parseArgs ns
1026parseArgs ("-O1":ns) = OptLevel 1 : parseArgs ns
1029parseArgs ("-O1":ns) = OptLevel 1 : parseArgs ns