kswoll / ReactiveUI.Fody

C# Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties.
MIT License
154 stars 31 forks source link

ObservableAsPropertyHelper of type long fails to compile #47

Closed domyd closed 7 years ago

domyd commented 7 years ago

Creating an ObservableAsPropertyHelper of type long with ReactiveUI.Fody fails at compile time with an exception.

Repro

This compiles: ✔️(as do string, double, etc.)

public class MainViewModel : ReactiveObject
{
    public extern int Text { [ObservableAsProperty] get; }
}

This doesn't compile: 🙁

public class MainViewModel : ReactiveObject
{
    public extern long Text { [ObservableAsProperty] get; }
}

Substituting Int64 for long also fails to compile.

Stacktrace

Error       Fody: An unhandled exception occurred:
Exception:
opcode
StackTrace:
   at Mono.Cecil.Cil.Instruction.Create(OpCode opcode)
   at ReactiveUI.Fody.ObservableAsPropertyWeaver.EmitDefaultValue(MethodBody methodBody, ILProcessor il, TypeReference type) in C:\projects\reactiveui-fody-ionu7\ReactiveUI.Fody\ObservableAsPropertyWeaver.cs:line 107
   at ReactiveUI.Fody.ObservableAsPropertyWeaver.<>c__DisplayClass8_1.<Execute>b__12(ILProcessor il) in C:\projects\reactiveui-fody-ionu7\ReactiveUI.Fody\ObservableAsPropertyWeaver.cs:line 84
   at ReactiveUI.Fody.CecilExtensions.Emit(MethodBody body, Action`1 il) in C:\projects\reactiveui-fody-ionu7\ReactiveUI.Fody\CecilExtensions.cs:line 13
   at ReactiveUI.Fody.ObservableAsPropertyWeaver.Execute() in C:\projects\reactiveui-fody-ionu7\ReactiveUI.Fody\ObservableAsPropertyWeaver.cs:line 76
   at ReactiveUI.Fody.ModuleWeaver.Execute() in C:\projects\reactiveui-fody-ionu7\ReactiveUI.Fody\ModuleWeaver.cs:line 31
   at lambda_method(Closure , Object )
   at InnerWeaver.ExecuteWeavers() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 180
   at InnerWeaver.Execute() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 85
Source:
Mono.Cecil
TargetSite:
Mono.Cecil.Cil.Instruction Create(Mono.Cecil.Cil.OpCode)    ReactiveUiFodyTest          
domyd commented 7 years ago

Turns out the fix was pretty simple; I'll submit a PR shortly 🙂