@@ -1641,11 +1641,15 @@ impl EnumType {
1641
1641
}
1642
1642
}
1643
1643
1644
- /// Returns name of a single variant of this [`EnumType`] by the given positional `num` in the
1645
- /// enum type definition .
1644
+ /// Returns name of a single variant of this [`EnumType`] by the given underlying [`syn::Type`]
1645
+ /// of the variant .
1646
1646
#[ must_use]
1647
- fn variant_ident ( num : usize ) -> syn:: Ident {
1648
- format_ident ! ( "Impl{}" , num)
1647
+ fn variant_ident ( ty : & syn:: Type ) -> & syn:: Ident {
1648
+ if let syn:: Type :: Path ( p) = ty {
1649
+ & p. path . segments . last ( ) . unwrap ( ) . ident
1650
+ } else {
1651
+ unreachable ! ( "GraphQL object has unexpected type `{}`" , quote! { #ty } )
1652
+ }
1649
1653
}
1650
1654
1651
1655
/// Indicates whether this [`EnumType`] has non-exhaustive phantom variant to hold type
@@ -1728,8 +1732,8 @@ impl EnumType {
1728
1732
self . trait_ident,
1729
1733
) ;
1730
1734
1731
- let variants = self . variants . iter ( ) . enumerate ( ) . map ( |( n , ty ) | {
1732
- let variant = Self :: variant_ident ( n ) ;
1735
+ let variants = self . variants . iter ( ) . map ( |ty | {
1736
+ let variant = Self :: variant_ident ( ty ) ;
1733
1737
let doc = format ! (
1734
1738
"`{}` implementer of this GraphQL interface." ,
1735
1739
quote! { #ty } ,
@@ -1783,8 +1787,8 @@ impl EnumType {
1783
1787
let enum_ty = & self . ident ;
1784
1788
let ( impl_generics, generics, where_clause) = self . trait_generics . split_for_impl ( ) ;
1785
1789
1786
- self . variants . iter ( ) . enumerate ( ) . map ( move |( n , ty ) | {
1787
- let variant = Self :: variant_ident ( n ) ;
1790
+ self . variants . iter ( ) . map ( move |ty | {
1791
+ let variant = Self :: variant_ident ( ty ) ;
1788
1792
1789
1793
quote ! {
1790
1794
#[ automatically_derived]
@@ -1846,8 +1850,8 @@ impl EnumType {
1846
1850
None
1847
1851
} ;
1848
1852
1849
- let match_arms = self . variants . iter ( ) . enumerate ( ) . map ( |( n , ty ) | {
1850
- let variant = Self :: variant_ident ( n ) ;
1853
+ let match_arms = self . variants . iter ( ) . map ( |ty | {
1854
+ let variant = Self :: variant_ident ( ty ) ;
1851
1855
let args = args. clone ( ) ;
1852
1856
1853
1857
quote ! {
@@ -1905,8 +1909,8 @@ impl EnumType {
1905
1909
fn method_concrete_type_name_tokens ( & self ) -> TokenStream {
1906
1910
let scalar = & self . scalar ;
1907
1911
1908
- let match_arms = self . variants . iter ( ) . enumerate ( ) . map ( |( n , ty ) | {
1909
- let variant = Self :: variant_ident ( n ) ;
1912
+ let match_arms = self . variants . iter ( ) . map ( |ty | {
1913
+ let variant = Self :: variant_ident ( ty ) ;
1910
1914
1911
1915
quote ! {
1912
1916
Self :: #variant( v) => <
@@ -1932,8 +1936,8 @@ impl EnumType {
1932
1936
fn method_resolve_into_type_tokens ( & self ) -> TokenStream {
1933
1937
let resolving_code = gen:: sync_resolving_code ( ) ;
1934
1938
1935
- let match_arms = self . variants . iter ( ) . enumerate ( ) . map ( |( n , _ ) | {
1936
- let variant = Self :: variant_ident ( n ) ;
1939
+ let match_arms = self . variants . iter ( ) . map ( |ty | {
1940
+ let variant = Self :: variant_ident ( ty ) ;
1937
1941
1938
1942
quote ! {
1939
1943
Self :: #variant( res) => #resolving_code,
@@ -1957,8 +1961,8 @@ impl EnumType {
1957
1961
fn method_resolve_into_type_async_tokens ( & self ) -> TokenStream {
1958
1962
let resolving_code = gen:: async_resolving_code ( None ) ;
1959
1963
1960
- let match_arms = self . variants . iter ( ) . enumerate ( ) . map ( |( n , _ ) | {
1961
- let variant = Self :: variant_ident ( n ) ;
1964
+ let match_arms = self . variants . iter ( ) . map ( |ty | {
1965
+ let variant = Self :: variant_ident ( ty ) ;
1962
1966
1963
1967
quote ! {
1964
1968
Self :: #variant( v) => {
0 commit comments