dark icon indicating copy to clipboard operation
dark copied to clipboard

(Fluid) Reconstructing list/tuples can cause "zeroes" to be mistakenly inserted

Open StachuDotNet opened this issue 2 years ago • 1 comments

  • Create a REPL of code: let z = [1,2,3]
  • highlight ,2,
  • create a new line below the let
  • paste

I expect either 2 or [ _ , 2, _ ] as the result, but instead get [0,2,0]. Similarly, if we replace 2 with "test", we get ["", "test", ""] as the result.

Tuples are likely to have this bug as well shortly as of #4182, unless we resolve this Issue prior to that merging.

StachuDotNet avatar Jun 30 '22 21:06 StachuDotNet

@pbiggar do you have any intuition as to when this condition could be hit? For some reason, the code+comment just isn't making sense to me.

What are examples of "tokens that don't have ancestors (depth = 0) but are not the topmost expression in the AST"?

Relevantly, a .minByWithIndex could intuitively be used rather than this .fold (which would improve clarity a lot), but this mystery condition may prevent that from realistically happening.

StachuDotNet avatar Jul 19 '22 11:07 StachuDotNet

I've stumbled upon a fix for this while working on #4452 - the result is that these steps:

  • Create a REPL of code: let z = [1,2,3]
  • highlight ,2,
  • create a new line below the let
  • paste

result in [_,2,_] being reconstructed. Before changes, it resulted in [0,2,0] (bad).

This seems appropriate to me; the only other option I'd understand would be for this to result in 2, which seems worse. Does this outcome seem ideal to you, @pbiggar?

StachuDotNet avatar Sep 22 '22 15:09 StachuDotNet

Yeah, this seems right

pbiggar avatar Sep 22 '22 16:09 pbiggar