Skip to content

Exception for setting value for (DateTime cval): TypeInitialization_Type, FSharp.Data.Adaptive.ShallowEqualityComparer`1 #117

@albertwoo

Description

@albertwoo

Issue

I am using dotnet 6 blazor WASM, in developing mode it works fine. But when publish in release mode, I got exception at runtime.

I did some investigation, it looks like at

il.EmitCall(OpCodes.Call, eq, null)

It will try to find DateTime's field _dateData (UInt64) for method of ShallowEqualityComparer[UInt64].ShallowEquals, but cannot find it.

By the way, I also tried with dotnet 8, it works fine.

Workaround

I can define below code in my own application to avoid this:

let _ = ShallowEqualityComparer<UInt64>.ShallowEquals

Exception detail:

Unhandled exception rendering component: TypeInitialization_Type, FSharp.Data.Adaptive.ShallowEqualityComparer`1
System.TypeInitializationException: TypeInitialization_Type, FSharp.Data.Adaptive.ShallowEqualityComparer`1
 ---> System.ArgumentNullException: ArgumentNull_Generic Arg_ParamName_Name, methodInfo
   at System.Reflection.Emit.ILGenerator.EmitCall(OpCode , MethodInfo , Type[] )
   at <StartupCode$FSharp-Data-Adaptive>.$ShallowEquality.equals$cont@273[DateTime](Type , Type , Unit )
   at FSharp.Data.Adaptive.ShallowEqualityComparer`1[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]..cctor()
   Exception_EndOfInnerExceptionStack
   at FSharp.Data.Adaptive.AValModule.MapVal`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Tuple`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Compute(AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.arg10@78[Tuple`2](AbstractVal`1 , AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.AbstractVal`1[[System.Tuple`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetValue(AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.AbstractVal`1[[System.Tuple`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].FSharp.Data.Adaptive.IAdaptiveValue<'T>.GetValue(AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.BindVal`2[[System.Tuple`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.Unit, FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], FSharp.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Fun.Blazor.NodeRenderFragment, Fun.Blazor, Version=4.0.9.0, Culture=neutral, PublicKeyToken=null]].Compute(AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.arg10@78[NodeRenderFragment](AbstractVal`1 , AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.AbstractVal`1[[Fun.Blazor.NodeRenderFragment, Fun.Blazor, Version=4.0.9.0, Culture=neutral, PublicKeyToken=null]].GetValue(AdaptiveToken )
   at FSharp.Data.Adaptive.AValModule.AbstractVal`1[[Fun.Blazor.NodeRenderFragment, Fun.Blazor, Version=4.0.9.0, Culture=neutral, PublicKeyToken=null]].FSharp.Data.Adaptive.IAdaptiveValue<'T>.GetValue(AdaptiveToken )
   at FSharp.Data.Adaptive.EvaluationCallbackExtensions.sub@51-3[[Fun.Blazor.NodeRenderFragment, Fun.Blazor, Version=4.0.9.0, Culture=neutral, PublicKeyToken=null]].Invoke(Unit )
   at FSharp.Data.Adaptive.Transaction.runFinalizers()
   at FSharp.Data.Adaptive.Transaction.System.IDisposable.Dispose()
   at FSharp.Data.Adaptive.TransactionModule.transact[Unit](FSharpFunc`2 )
   at Fun.Blazor.DslAdaptive.setValue@92[[System.DateTime, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Invoke(DateTime )
   at FunWasm.MudBlazorDemo.App.homePage@39-6.Invoke(MouseEventArgs delegateArg0)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object , BindingFlags , Binder , Object[] , CultureInfo )
--- End of stack trace from previous location ---
   at <StartupCode$Fun-Blazor>.$Core.Microsoft-AspNetCore-Components-IHandleEvent-HandleEventAsync@130.MoveNext()
   at MudBlazor.MudBaseButton.OnClickHandler(MouseEventArgs ev)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task , ComponentState )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions