@@ -195,7 +195,7 @@ impl FlagSet {
195
195
}
196
196
197
197
/// args returns the non-flag arguments.
198
- pub fn args ( self ) -> Vec < String > {
198
+ pub fn args ( & self ) -> Vec < String > {
199
199
self . args . clone ( )
200
200
}
201
201
@@ -419,14 +419,14 @@ impl FlagSet {
419
419
let c = arg. unwrap ( ) ;
420
420
if * c == '=' {
421
421
args. next ( ) ;
422
- self . set ( name, scan_arg ( args) ) ? ;
422
+ return self . set ( name, scan_arg ( args) ) ;
423
423
} else if no_opt_def_value != "" {
424
424
self . set ( name, no_opt_def_value) ?;
425
425
} else if * c != ' ' {
426
- self . set ( name, scan_arg ( args) ) ? ;
426
+ return self . set ( name, scan_arg ( args) ) ;
427
427
} else {
428
428
args. next ( ) ;
429
- self . set ( name, scan_arg ( args) ) ? ;
429
+ return self . set ( name, scan_arg ( args) ) ;
430
430
}
431
431
}
432
432
}
@@ -839,4 +839,32 @@ mod tests {
839
839
let bools = flags. value_of :: < Slice < bool > > ( "bools" ) . unwrap ( ) ;
840
840
assert_eq ! ( bools. len( ) , 1 ) ;
841
841
}
842
+
843
+ #[ test]
844
+ fn parse_arg_after_shorthand ( ) {
845
+ let mut flags = FlagSet :: new ( "test" ) ;
846
+ flags. int8_p ( "int" , 'i' , 0 , "test" ) ;
847
+
848
+ if let Err ( err) = flags. parse ( vec ! [ "-i=1" , "test" ] ) {
849
+ panic ! ( err) ;
850
+ }
851
+
852
+ let int = flags. value_of :: < i8 > ( "int" ) . unwrap ( ) ;
853
+ assert_eq ! ( int, 1 ) ;
854
+ assert_eq ! ( flags. args( ) . len( ) , 1 ) ;
855
+ }
856
+
857
+ #[ test]
858
+ fn parse_arg_after_shorthand_with_space ( ) {
859
+ let mut flags = FlagSet :: new ( "test" ) ;
860
+ flags. int8_p ( "int" , 'i' , 0 , "test" ) ;
861
+
862
+ if let Err ( err) = flags. parse ( vec ! [ "-i" , "1" , "test" ] ) {
863
+ panic ! ( err) ;
864
+ }
865
+
866
+ let int = flags. value_of :: < i8 > ( "int" ) . unwrap ( ) ;
867
+ assert_eq ! ( int, 1 ) ;
868
+ assert_eq ! ( flags. args( ) . len( ) , 1 ) ;
869
+ }
842
870
}
0 commit comments