@@ -239,22 +239,37 @@ module ObjectListFilter =
239239 let buildTypeDiscriminatorCheck ( param : SourceExpression ) ( t : Type ) =
240240 match options.CompareDiscriminator, options.GetDiscriminatorValue with
241241 | ValueNone, ValueNone ->
242- // use __typename from filter and do type.ToSting() for values
243- let typename = t.FullName
244- Expression.Equal ( Expression.PropertyOrField ( param, " __typename" ), Expression.Constant ( typename)) :> Expression
242+ Expression.Equal (
243+ // Default discriminator property
244+ Expression.PropertyOrField ( param, " __typename" ),
245+ // Default discriminator value
246+ Expression.Constant ( t.FullName)
247+ ) :> Expression
245248 | ValueSome discExpr, ValueNone ->
246- // use discriminator and do type.ToSting() for values
247- let typename = t.FullName
248- Expression.Invoke ( discExpr, param, Expression.Constant ( typename)) :> Expression
249+ Expression.Invoke (
250+ // Provided discriminator comparison
251+ discExpr,
252+ param,
253+ // Default discriminator value gathered from type
254+ Expression.Constant( t.FullName)
255+ ) :> Expression
249256 | ValueNone, ValueSome discValueFn ->
250- // use __typename from filter and execute discValueFn for values
251257 let discriminatorValue = discValueFn t
252- Expression.Equal ( Expression.PropertyOrField ( param, " __typename" ), Expression.Constant ( discriminatorValue)) :> Expression
258+ Expression.Equal (
259+ // Default discriminator property
260+ Expression.PropertyOrField ( param, " __typename" ),
261+ // Provided discriminator value gathered from type
262+ Expression.Constant ( discriminatorValue)
263+ ) :> Expression
253264 | ValueSome discExpr, ValueSome discValueFn ->
254- // use discriminator and execute discValueFn for values
255265 let discriminatorValue = discValueFn t
256- Expression.Invoke ( discExpr, param, Expression.Constant ( discriminatorValue))
257-
266+ Expression.Invoke (
267+ // Provided discriminator comparison
268+ discExpr,
269+ param,
270+ // Provided discriminator value gathered from type
271+ Expression.Constant ( discriminatorValue)
272+ )
258273 let queryExpr =
259274 let param = Expression.Parameter ( typeof< 'T>, " x" )
260275 let body = buildFilterExpr ( SourceExpression param) buildTypeDiscriminatorCheck filter
0 commit comments