@@ -251,10 +251,15 @@ protected void WriteResolverField(Resolver resolver)
251
251
252
252
public virtual void WriteResolverConstructor ( IOutputTypeInfo type , ILocalTypeLookup typeLookup )
253
253
{
254
+ var resolverType =
255
+ type . SchemaSchemaType
256
+ ?? type . RuntimeType
257
+ ?? throw new InvalidOperationException ( "Schema type and runtime type are null." ) ;
258
+
254
259
WriteResolverConstructor (
255
260
type ,
256
261
typeLookup ,
257
- type . Resolvers [ 0 ] . Member . ContainingType . ToFullyQualified ( ) ,
262
+ resolverType . ToFullyQualified ( ) ,
258
263
type . Resolvers . Any ( t => t . RequiresParameterBindings ) ) ;
259
264
}
260
265
@@ -697,19 +702,19 @@ private void WriteResolverArguments(Resolver resolver, IMethodSymbol resolverMet
697
702
break ;
698
703
699
704
case ResolverParameterKind . GetGlobalState when parameter . Parameter . HasExplicitDefaultValue :
700
- {
701
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
702
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
705
+ {
706
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
707
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
703
708
704
- Writer . WriteIndentedLine (
705
- "var args{0} = context.GetGlobalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
706
- i ,
707
- parameter . Type . ToFullyQualified ( ) ,
708
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
709
- parameter . Key ,
710
- defaultValueString ) ;
711
- break ;
712
- }
709
+ Writer . WriteIndentedLine (
710
+ "var args{0} = context.GetGlobalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
711
+ i ,
712
+ parameter . Type . ToFullyQualified ( ) ,
713
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
714
+ parameter . Key ,
715
+ defaultValueString ) ;
716
+ break ;
717
+ }
713
718
714
719
case ResolverParameterKind . GetGlobalState when ! parameter . IsNullable :
715
720
Writer . WriteIndentedLine (
@@ -737,19 +742,19 @@ private void WriteResolverArguments(Resolver resolver, IMethodSymbol resolverMet
737
742
break ;
738
743
739
744
case ResolverParameterKind . GetScopedState when parameter . Parameter . HasExplicitDefaultValue :
740
- {
741
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
742
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
745
+ {
746
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
747
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
743
748
744
- Writer . WriteIndentedLine (
745
- "var args{0} = context.GetScopedStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
746
- i ,
747
- parameter . Type . ToFullyQualified ( ) ,
748
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
749
- parameter . Key ,
750
- defaultValueString ) ;
751
- break ;
752
- }
749
+ Writer . WriteIndentedLine (
750
+ "var args{0} = context.GetScopedStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
751
+ i ,
752
+ parameter . Type . ToFullyQualified ( ) ,
753
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
754
+ parameter . Key ,
755
+ defaultValueString ) ;
756
+ break ;
757
+ }
753
758
754
759
case ResolverParameterKind . GetScopedState when ! parameter . IsNullable :
755
760
Writer . WriteIndentedLine (
@@ -777,19 +782,19 @@ private void WriteResolverArguments(Resolver resolver, IMethodSymbol resolverMet
777
782
break ;
778
783
779
784
case ResolverParameterKind . GetLocalState when parameter . Parameter . HasExplicitDefaultValue :
780
- {
781
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
782
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
785
+ {
786
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
787
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
783
788
784
- Writer . WriteIndentedLine (
785
- "var args{0} = context.GetLocalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
786
- i ,
787
- parameter . Type . ToFullyQualified ( ) ,
788
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
789
- parameter . Key ,
790
- defaultValueString ) ;
791
- break ;
792
- }
789
+ Writer . WriteIndentedLine (
790
+ "var args{0} = context.GetLocalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
791
+ i ,
792
+ parameter . Type . ToFullyQualified ( ) ,
793
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
794
+ parameter . Key ,
795
+ defaultValueString ) ;
796
+ break ;
797
+ }
793
798
794
799
case ResolverParameterKind . GetLocalState when ! parameter . IsNullable :
795
800
Writer . WriteIndentedLine (
@@ -947,7 +952,52 @@ private void WriteResolverArguments(Resolver resolver, IMethodSymbol resolverMet
947
952
948
953
Writer . WriteIndentedLine ( "};" ) ;
949
954
}
955
+ break ;
956
+
957
+ case ResolverParameterKind . ConnectionFlags :
958
+ Writer . WriteIndentedLine (
959
+ "var args{0} = global::{1}.Nothing;" ,
960
+ i ,
961
+ WellKnownTypes . ConnectionFlags ) ;
962
+ Writer . WriteLine ( ) ;
963
+
964
+ Writer . WriteIndentedLine (
965
+ "if(context.IsSelected(\" edges\" ))" ) ;
966
+ Writer . WriteIndentedLine ( "{" ) ;
967
+ using ( Writer . IncreaseIndent ( ) )
968
+ {
969
+ Writer . WriteIndentedLine (
970
+ "args{0} |= global::{1}.Edges;" ,
971
+ i ,
972
+ WellKnownTypes . ConnectionFlags ) ;
973
+ }
974
+ Writer . WriteIndentedLine ( "}" ) ;
975
+ Writer . WriteLine ( ) ;
976
+
977
+ Writer . WriteIndentedLine (
978
+ "if(context.IsSelected(\" nodes\" ))" ) ;
979
+ Writer . WriteIndentedLine ( "{" ) ;
980
+ using ( Writer . IncreaseIndent ( ) )
981
+ {
982
+ Writer . WriteIndentedLine (
983
+ "args{0} |= global::{1}.Nodes;" ,
984
+ i ,
985
+ WellKnownTypes . ConnectionFlags ) ;
986
+ }
987
+ Writer . WriteIndentedLine ( "}" ) ;
988
+ Writer . WriteLine ( ) ;
950
989
990
+ Writer . WriteIndentedLine (
991
+ "if(context.IsSelected(\" totalCount\" ))" ) ;
992
+ Writer . WriteIndentedLine ( "{" ) ;
993
+ using ( Writer . IncreaseIndent ( ) )
994
+ {
995
+ Writer . WriteIndentedLine (
996
+ "args{0} |= global::{1}.TotalCount;" ,
997
+ i ,
998
+ WellKnownTypes . ConnectionFlags ) ;
999
+ }
1000
+ Writer . WriteIndentedLine ( "}" ) ;
951
1001
break ;
952
1002
953
1003
case ResolverParameterKind . Unknown :
0 commit comments