Tomas Grosup
Tomas Grosup
Request for feedback: Any layout-changing proposal is a binary breaking change for existing definitions, which means it could probably only go in via opt-in (e.g. attribute). But as a small...
Relevant: https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting#avoid-formatting-that-is-sensitive-to-name-length After playing with the sample a little ( https://sharplab.io/#v2:DYLgZgzgPgtg9gEwK7AKYAIDCwCGEIAyAlgEYBOOZAngIwCwAUI3AA6oB26AylRAC6oYAOgAqACzKocCIuwDmovAGsIjRmj7owAJgDMAFgCs6ABQBKdAF50fZegDejdM+eS+SMp3PoAvuhAAfOgiykA= ), I think the rule I am observing so far is: _When using the style of declaration, the number...
@auduchinok : The relation to the length of the function is indirect here - it affects where the context starts, since name length keeps moving the "{" character.
I wonder how the IL spec looks at it - but we are likely the only compiler running into that I assume. i.e. would code that `uses .tail before working...
@jakobbotsch: Hi Jakob, could you please help us out with identifying the right behavior? We have a combination of a `pinned` local, a `tail.` instruction, and then a `call` to...
So for situations like the one here, it would be up to the IL Generator (F#) to not emit `.tail` when the last `call` happens to make use of a...
I think the best fix in this case would be to eliminate `.tail` alltogether in this scenario.
Fixed at https://github.com/dotnet/fsharp/pull/18893
@copilot src/Compiler/Checking/Expressions/CheckExpressions.fs:7318 I am missing any kind of condition for only doing that for object expressions defined within structs. You are naming the bindings as if you handled structs only,...
@copilot The following compilation of F# core now fails with errors: ```fsharp module RuntimeHelpers = [] type internal StructBox(value:'T) = member x.Value = value static member Comparer = let gcomparer...