@@ -392,7 +392,7 @@ module SchemaDefinitions =
392392 | false , _ -> getParseError destinationType s
393393 | InlineConstant value -> value.GetCoerceError destinationType
394394
395- type TypeWrapperDispatch =
395+ type TypeWrapperStaticDispatch =
396396 static member Nullable < 'Val >( innerDef : InputOutputDef < 'Val >) : NullableDef < 'Val > =
397397 let ofType : TypeDef < 'Val > = upcast innerDef
398398 upcast { NullableDefinition.OfType = ofType }
@@ -431,24 +431,33 @@ module SchemaDefinitions =
431431
432432 /// Wraps a GraphQL input or output type definition, allowing defining field/argument
433433 /// to take option of provided value while preserving input/output kind of wrapped type.
434- let inline Nullable < ^Def , ^Wrapped when ( ^Def or TypeWrapperDispatch ) : ( static member Nullable : ^Def -> ^Wrapped ) >
434+ /// Input wrappers produce input definitions, output wrappers produce output definitions,
435+ /// and wrappers over types implementing both kinds keep both capabilities.
436+ /// Dispatch is selected at compile time via SRTP.
437+ let inline Nullable < ^Def , ^Wrapped when ( ^Def or TypeWrapperStaticDispatch ) : ( static member Nullable : ^Def -> ^Wrapped ) >
435438 ( innerDef : ^Def )
436439 : ^Wrapped =
437- (( ^Def or TypeWrapperDispatch ) : ( static member Nullable : ^Def -> ^Wrapped ) innerDef)
440+ (( ^Def or TypeWrapperStaticDispatch ) : ( static member Nullable : ^Def -> ^Wrapped ) innerDef)
438441
439442 /// Wraps a GraphQL input or output type definition, allowing defining field/argument
440443 /// to take voption of provided value while preserving input/output kind of wrapped type.
441- let inline StructNullable < ^Def , ^Wrapped when ( ^Def or TypeWrapperDispatch ) : ( static member StructNullable : ^Def -> ^Wrapped ) >
444+ /// Input wrappers produce input definitions, output wrappers produce output definitions,
445+ /// and wrappers over types implementing both kinds keep both capabilities.
446+ /// Dispatch is selected at compile time via SRTP.
447+ let inline StructNullable < ^Def , ^Wrapped when ( ^Def or TypeWrapperStaticDispatch ) : ( static member StructNullable : ^Def -> ^Wrapped ) >
442448 ( innerDef : ^Def )
443449 : ^Wrapped =
444- (( ^Def or TypeWrapperDispatch ) : ( static member StructNullable : ^Def -> ^Wrapped ) innerDef)
450+ (( ^Def or TypeWrapperStaticDispatch ) : ( static member StructNullable : ^Def -> ^Wrapped ) innerDef)
445451
446452 /// Wraps a GraphQL input or output type definition, allowing defining field/argument
447453 /// to take collection of provided value while preserving input/output kind of wrapped type.
448- let inline ListOf < ^Def , ^Wrapped when ( ^Def or TypeWrapperDispatch ) : ( static member ListOf : ^Def -> ^Wrapped ) >
454+ /// Input wrappers produce input definitions, output wrappers produce output definitions,
455+ /// and wrappers over types implementing both kinds keep both capabilities.
456+ /// Dispatch is selected at compile time via SRTP.
457+ let inline ListOf < ^Def , ^Wrapped when ( ^Def or TypeWrapperStaticDispatch ) : ( static member ListOf : ^Def -> ^Wrapped ) >
449458 ( innerDef : ^Def )
450459 : ^Wrapped =
451- (( ^Def or TypeWrapperDispatch ) : ( static member ListOf : ^Def -> ^Wrapped ) innerDef)
460+ (( ^Def or TypeWrapperStaticDispatch ) : ( static member ListOf : ^Def -> ^Wrapped ) innerDef)
452461
453462 let internal variableOrElse other ( _ : InputExecutionContextProvider ) value ( variables : IReadOnlyDictionary < string , obj >) =
454463 match value with
0 commit comments