@@ -80,14 +80,14 @@ macro_rules! help_text {
8080#[ macro_export]
8181#[ doc( hidden) ]
8282macro_rules! _cli_impl {
83- ( $name: literal, $stdout: ident, $loop_type : tt , $ ( $item: pat => $matcher: expr) * ) => {
83+ ( $name: literal, $stdout: ident, $( $item: pat => $matcher: expr) * ) => {
8484 {
8585 use std:: io:: Write ;
8686 use sap:: Argument :: * ;
8787
8888 let mut arg_parser = sap:: Parser :: from_env( ) ?;
8989
90- $loop_type let Some ( arg) = arg_parser. forward( ) ? {
90+ while let Some ( arg) = arg_parser. forward( ) ? {
9191 match arg {
9292 Long ( "version" ) => {
9393 $stdout. write_all( $crate:: version_text!( $name) . as_bytes( ) ) ?;
@@ -110,12 +110,16 @@ macro_rules! _cli_impl {
110110
111111#[ macro_export]
112112macro_rules! cli {
113- ( $name: literal, $stdout: ident, while , $( $item: pat => $matcher: expr) * ) => {
114- $crate:: _cli_impl!( $name, $stdout, while , $( $item => $matcher) * )
113+ ( $name: literal, $stdout: ident, $( $item: pat => $matcher: expr) * ) => {
114+ $crate:: _cli_impl!( $name, $stdout, $( $item => $matcher) * )
115115 } ;
116116
117- ( $name: literal, $stdout: ident, if , $( $item: pat => $matcher: expr) * ) => {
118- $crate:: _cli_impl!( $name, $stdout, if , $( $item => $matcher) * )
117+ ( $name: literal, $stdout: ident, #fall $( $item: pat => $matcher: expr) * ) => {
118+ $crate:: _cli_impl!( $name, $stdout, $( $item => $matcher) * _ => { } )
119+ } ;
120+
121+ ( $name: literal, $stdout: ident, #error $( $item: pat => $matcher: expr) * ) => {
122+ $crate:: _cli_impl!( $name, $stdout, $( $item => $matcher) * arg => return Err ( arg. into_error( None ) . into( ) ) )
119123 } ;
120124}
121125
0 commit comments