Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi, I've partly fixed #707 issue for Elixir's
do:
blocks. However there are still some problems, which are also exist in current implementation ofdef ... do ... end
blocks.With my changes the example from the linked issue no works:
defmodule
is correctly matched with the lastend
. Thedef func_two, do: IO.puts("hi 2")
is completely skipped.However this will not work:
Now, I must note, that even without my patch, the following construct will not work either:
This is due to the fact, that the check if line based, and we simply check if do is on the same line, which is not strict enough. I'm not sure how one would do a better check, perhaps with a search, but this does not guarantee that we'll find correct keyword, and not something that also can match.
Given that, this PR fixes specifically the
def func_two, do: IO.puts("hi 2")
case.