why F# debugger lies?
error-handling, f#, visual-studio
Solution
The debugging experience seems to do a poor job of identifying the correct binding for identifiers. In your example, this means that any identifier called `Source` is really showing the value of `this.Source`, rather than the corresponding property of the correct object. Note that you can get the right value by hovering over `y` and expanding the members (although this is obviously not a great experience).
There are even more confusing ways that this issue manifests itself:
type T() =
member val P = 1
member this.DoSomething() =
let P = "test" // set breakpoint here, hover over P
printfn "%i" this.P // set breakpoint here, hover over P
T().DoSomething()
Now, whichever instance of `P` you hover over, you get the wrong thing!
Problem
Can anyone explain me why debugger of VS2012 is showing different values for same member of object? (See the figure) http://s2.uploads.ru/jlkw0.png (Sorry for nonEnglish interface of VS, but I think the situation is clear.) Here the code: http://pastie.org/7186239