@@ -61,7 +61,7 @@ pub fn flatten_ty<'a>(resolve: &'a Resolve, ty: &Type) -> impl Iterator<Item = T
6161 continue ;
6262 }
6363 TypeDefKind :: Tuple ( ref t) => {
64- return Box :: new ( t. types . iter ( ) . map ( |ty| * ty ) ) as Box < dyn Iterator < Item = _ > >
64+ return Box :: new ( t. types . iter ( ) . copied ( ) ) as Box < dyn Iterator < Item = _ > >
6565 }
6666 _ => { }
6767 }
@@ -546,7 +546,7 @@ impl InterfaceGenerator<'_> {
546546 let errors = self . deps . errors ( ) ;
547547 let slog = self . deps . slog ( ) ;
548548 let wrpc = self . deps . wrpc ( ) ;
549- uwrite ! ( self . src, "func(r {wrpc}.IndexReader , path ...uint32) (" ) ;
549+ uwrite ! ( self . src, "func(r {wrpc}.IndexReadCloser , path ...uint32) (" ) ;
550550 self . print_list ( ty) ;
551551 uwrite ! (
552552 self . src,
@@ -605,7 +605,7 @@ impl InterfaceGenerator<'_> {
605605 let fmt = self . deps . fmt ( ) ;
606606 let slog = self . deps . slog ( ) ;
607607 let wrpc = self . deps . wrpc ( ) ;
608- uwrite ! ( self . src, "func(r {wrpc}.IndexReader , path ...uint32) (" ) ;
608+ uwrite ! ( self . src, "func(r {wrpc}.IndexReadCloser , path ...uint32) (" ) ;
609609 self . print_option ( ty, true ) ;
610610 uwrite ! (
611611 self . src,
@@ -652,7 +652,10 @@ impl InterfaceGenerator<'_> {
652652 let fmt = self . deps . fmt ( ) ;
653653 let slog = self . deps . slog ( ) ;
654654 let wrpc = self . deps . wrpc ( ) ;
655- uwrite ! ( self . src, "func(r {wrpc}.IndexReader, path ...uint32) (*" ) ;
655+ uwrite ! (
656+ self . src,
657+ "func(r {wrpc}.IndexReadCloser, path ...uint32) (*"
658+ ) ;
656659 self . print_result ( ty) ;
657660 uwriteln ! (
658661 self . src,
@@ -736,7 +739,7 @@ impl InterfaceGenerator<'_> {
736739
737740 uwriteln ! (
738741 self . src,
739- r#"func(r {wrpc}.IndexReader , path ...uint32) (*{name}, error) {{
742+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) (*{name}, error) {{
740743 v := &{name}{{}}
741744 var err error"#
742745 ) ;
@@ -828,7 +831,7 @@ impl InterfaceGenerator<'_> {
828831
829832 uwrite ! (
830833 self . src,
831- r#"func(r {wrpc}.IndexReader , path ...uint32) (*{name}, error) {{
834+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) (*{name}, error) {{
832835 v := &{name}{{}}
833836 n, err := "#
834837 ) ;
@@ -891,7 +894,10 @@ impl InterfaceGenerator<'_> {
891894 _ => {
892895 let wrpc = self . deps . wrpc ( ) ;
893896
894- uwrite ! ( self . src, "func(r {wrpc}.IndexReader, path ...uint32) (*" ) ;
897+ uwrite ! (
898+ self . src,
899+ "func(r {wrpc}.IndexReadCloser, path ...uint32) (*"
900+ ) ;
895901 self . print_tuple ( ty, true ) ;
896902 self . push_str ( ", error) {\n " ) ;
897903 self . push_str ( "v := &" ) ;
@@ -938,7 +944,7 @@ impl InterfaceGenerator<'_> {
938944
939945 uwriteln ! (
940946 self . src,
941- r#"func(r {wrpc}.IndexReader , path ...uint32) ({io}.ReadCloser, error) {{
947+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) ({io}.ReadCloser, error) {{
942948 {slog}.Debug("reading byte list future status byte")
943949 status, err := r.ReadByte()
944950 if err != nil {{
@@ -947,9 +953,12 @@ impl InterfaceGenerator<'_> {
947953 switch status {{
948954 case 0:
949955 {slog}.Debug("indexing pending byte list future reader")
950- r, err := r.Index(path...)
951- if err != nil {{
952- return nil, {fmt}.Errorf("failed to index nested byte list future reader: %w", err)
956+ if len(path) > 0 {{
957+ var err error
958+ r, err = r.Index(path...)
959+ if err != nil {{
960+ return nil, {fmt}.Errorf("failed to index nested byte list future reader: %w", err)
961+ }}
953962 }}
954963 return {wrpc}.NewByteStreamReader(r), nil
955964 case 1:
@@ -984,7 +993,7 @@ impl InterfaceGenerator<'_> {
984993
985994 uwrite ! (
986995 self . src,
987- r#"func(r {wrpc}.IndexReader , path ...uint32) ({wrpc}.Receiver["#
996+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) ({wrpc}.Receiver["#
988997 ) ;
989998 self . print_opt_ty ( ty, true ) ;
990999 uwrite ! (
@@ -998,11 +1007,14 @@ impl InterfaceGenerator<'_> {
9981007 switch status {{
9991008 case 0:
10001009 {slog}.Debug("indexing pending future reader")
1001- r, err := r.Index(path...)
1002- if err != nil {{
1003- return nil, {fmt}.Errorf("failed to index nested future reader: %w", err)
1010+ if len(path) > 0 {{
1011+ var err error
1012+ r, err = r.Index(path...)
1013+ if err != nil {{
1014+ return nil, {fmt}.Errorf("failed to index nested future reader: %w", err)
1015+ }}
10041016 }}
1005- return {wrpc}.NewDecodeReceiver(r, func(r {wrpc}.IndexReader ) ("#
1017+ return {wrpc}.NewDecodeReceiver(r, func(r {wrpc}.IndexReadCloser ) ("#
10061018 ) ;
10071019 self . print_opt_ty ( ty, true ) ;
10081020 uwrite ! (
@@ -1059,17 +1071,20 @@ impl InterfaceGenerator<'_> {
10591071
10601072 uwriteln ! (
10611073 self . src,
1062- r#"func(r {wrpc}.IndexReader , path ...uint32) ({io}.ReadCloser, error) {{
1074+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) ({io}.ReadCloser, error) {{
10631075 {slog}.Debug("reading byte stream status byte")
10641076 status, err := r.ReadByte()
10651077 if err != nil {{
10661078 return nil, {fmt}.Errorf("failed to read byte stream status byte: %w", err)
10671079 }}
10681080 switch status {{
10691081 case 0:
1070- r, err := r.Index(path...)
1071- if err != nil {{
1072- return nil, {fmt}.Errorf("failed to index nested byte stream reader: %w", err)
1082+ if len(path) > 0 {{
1083+ var err error
1084+ r, err = r.Index(path...)
1085+ if err != nil {{
1086+ return nil, {fmt}.Errorf("failed to index nested byte stream reader: %w", err)
1087+ }}
10731088 }}
10741089 return {wrpc}.NewByteStreamReader(r), nil
10751090 case 1:
@@ -1107,7 +1122,7 @@ impl InterfaceGenerator<'_> {
11071122
11081123 uwrite ! (
11091124 self . src,
1110- r#"func(r {wrpc}.IndexReader , path ...uint32) ({wrpc}.Receiver["#
1125+ r#"func(r {wrpc}.IndexReadCloser , path ...uint32) ({wrpc}.Receiver["#
11111126 ) ;
11121127 self . print_list ( ty) ;
11131128 uwrite ! (
@@ -1120,12 +1135,15 @@ impl InterfaceGenerator<'_> {
11201135 }}
11211136 switch status {{
11221137 case 0:
1123- r, err := r.Index(path...)
1124- if err != nil {{
1125- return nil, {fmt}.Errorf("failed to index nested stream reader: %w", err)
1138+ if len(path) > 0 {{
1139+ var err error
1140+ r, err = r.Index(path...)
1141+ if err != nil {{
1142+ return nil, {fmt}.Errorf("failed to index nested stream reader: %w", err)
1143+ }}
11261144 }}
11271145 var total uint32
1128- return {wrpc}.NewDecodeReceiver(r, func(r {wrpc}.IndexReader ) ("#
1146+ return {wrpc}.NewDecodeReceiver(r, func(r {wrpc}.IndexReadCloser ) ("#
11291147 ) ;
11301148 self . print_list ( ty) ;
11311149 uwrite ! (
@@ -2602,14 +2620,14 @@ func ServeInterface(s {wrpc}.Server, h Handler) (stop func() error, err error) {
26022620
26032621 let mut idx = 0usize ;
26042622 for ( i, ty) in func. results . iter_types ( ) . enumerate ( ) {
2605- for ( j, _) in flatten_ty ( & self . resolve , ty) . enumerate ( ) {
2623+ for ( j, _) in flatten_ty ( self . resolve , ty) . enumerate ( ) {
26062624 uwrite ! (
26072625 self . src,
26082626 r#"
26092627 case {idx}:
26102628 w, err := w.Index("# ,
26112629 ) ;
2612- if is_tuple ( & self . resolve , ty) {
2630+ if is_tuple ( self . resolve , ty) {
26132631 uwrite ! ( self . src, "{i}, " ) ;
26142632 }
26152633 uwrite ! (
@@ -2875,13 +2893,13 @@ func ServeInterface(s {wrpc}.Server, h Handler) (stop func() error, err error) {
28752893
28762894 let mut idx = 0usize ;
28772895 for ( i, rty) in func. results . iter_types ( ) . enumerate ( ) {
2878- for ( j, ty) in flatten_ty ( & self . resolve , rty) . enumerate ( ) {
2896+ for ( j, ty) in flatten_ty ( self . resolve , rty) . enumerate ( ) {
28792897 uwrite ! (
28802898 self . src,
28812899 "
28822900 r{idx}__, err__ = "
28832901 ) ;
2884- let path = if is_tuple ( & self . resolve , rty) {
2902+ let path = if is_tuple ( self . resolve , rty) {
28852903 format ! ( "[]uint32{{ {i}, {j} }}" )
28862904 } else {
28872905 format ! ( "[]uint32{{ {idx} }}" )
0 commit comments