From 326d99d3ea1f73a610e92adc32f8bc43f17c947e Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 26 Apr 2006 12:11:10 +0000 Subject: [PATCH] RequireOrder: do not collect unrecognised options after a non-opt The documentation for RequireOrder says "no option processing after first non-option", so it doesn't seem right that we should process the rest of the arguments to collect the unrecognised ones. Presumably the client wants to know about the unrecognised options up to the first non-option, and will be using a different option parser for the rest of the command line. eg. before: Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"] ([],["bar","--foo"],["--foo"],[]) after: Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"] ([],["bar","--foo"],[],[]) --- System/Console/GetOpt.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/System/Console/GetOpt.hs b/System/Console/GetOpt.hs index fa9f9b2..c1463c0 100644 --- a/System/Console/GetOpt.hs +++ b/System/Console/GetOpt.hs @@ -161,7 +161,7 @@ getOpt' _ _ [] = ([],[],[],[]) getOpt' ordering optDescr (arg:args) = procNextOpt opt ordering where procNextOpt (Opt o) _ = (o:os,xs,us,es) procNextOpt (UnreqOpt u) _ = (os,xs,u:us,es) - procNextOpt (NonOpt x) RequireOrder = ([],x:rest,us,[]) + procNextOpt (NonOpt x) RequireOrder = ([],x:rest,[],[]) procNextOpt (NonOpt x) Permute = (os,x:xs,us,es) procNextOpt (NonOpt x) (ReturnInOrder f) = (f x :os, xs,us,es) procNextOpt EndOfOpts RequireOrder = ([],rest,[],[]) -- 1.7.10.4