@@ -370,7 +370,7 @@ private static bool AreArgumentsIdentical(FieldNode fieldA, FieldNode fieldB)
370
370
371
371
if ( BySyntax . Equals ( argumentA . Name , argumentB . Name ) )
372
372
{
373
- if ( BySyntax . Equals ( argumentA . Value , argumentB . Value ) )
373
+ if ( IsValueIdentical ( argumentA . Value , argumentB . Value ) )
374
374
{
375
375
validPairs ++ ;
376
376
}
@@ -383,6 +383,50 @@ private static bool AreArgumentsIdentical(FieldNode fieldA, FieldNode fieldB)
383
383
return fieldA . Arguments . Count == validPairs ;
384
384
}
385
385
386
+ private static bool IsValueIdentical (
387
+ IValueNode ? valueA ,
388
+ IValueNode ? valueB )
389
+ {
390
+ if ( valueA is null && valueB is null )
391
+ {
392
+ return true ;
393
+ }
394
+
395
+ if ( valueA is null || valueB is null )
396
+ {
397
+ return false ;
398
+ }
399
+
400
+ if ( valueA is ObjectValueNode objectA && valueB is ObjectValueNode objectB )
401
+ {
402
+ var validPairs = 0 ;
403
+
404
+ for ( var i = 0 ; i < objectA . Fields . Count ; i ++ )
405
+ {
406
+ var fieldA = objectA . Fields [ i ] ;
407
+
408
+ for ( var j = 0 ; j < objectB . Fields . Count ; j ++ )
409
+ {
410
+ var fieldB = objectB . Fields [ j ] ;
411
+
412
+ if ( BySyntax . Equals ( fieldA . Name , fieldB . Name ) )
413
+ {
414
+ if ( IsValueIdentical ( fieldA . Value , fieldB . Value ) )
415
+ {
416
+ validPairs ++ ;
417
+ }
418
+
419
+ break ;
420
+ }
421
+ }
422
+ }
423
+
424
+ return objectA . Fields . Count == validPairs ;
425
+ }
426
+
427
+ return BySyntax . Equals ( valueA , valueB ) ;
428
+ }
429
+
386
430
private static bool SameResponseShape ( IType typeA , IType typeB )
387
431
{
388
432
while ( ! typeA . IsNamedType ( ) && ! typeB . IsNamedType ( ) )
0 commit comments