Issue #14463 has been updated by duerst (Martin Drst).


isiahmeadows (Isiah Meadows) wrote:
> duerst (Martin Drst) wrote:
> > There is extensive discussion on this at #7636. Please check.
> 
> I presume you meant #7639...

Sorry.

> I still find it very odd that it's inconsistent. The alternative to my proposal would be to make the third also error (as I presume it did previously), so it'll remain consistent across both. (Ruby isn't my primary language, so I'm still getting used to the language-level preference for dot-last.)

[The following is just a summary of the overall thinking, as I said details can be found at #7639.]

The way things work in Ruby in general is that the operator (and `.` is also an operator) has to come at the end of the line so that Ruby understands that the expression isn't finished at the end of the line.

An exception was made for `.` because it turned out that it was very useful in method chains to write the dot at the start of the line. However, that exception didn't go as far as to allow comments between the lines. The reason for this is that it may be difficult to parse both for humans (there could be a leading `.` after a 100 lines of comments, which would suddenly totally change the meaning of the line above the comment) as well as for the actual parser (the Ruby parser is already quite complicated anyway).

----------------------------------------
Feature #14463: Allow comments to precede dots in member expressions
https://bugs.ruby-lang.org/issues/14463#change-70689

* Author: isiahmeadows (Isiah Meadows)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
I, coming from other languages, find it *extremely* odd that the first three are considered valid, but the fourth is a syntax error (tested in Ruby 2.3.4 + 2.5.0, Rubocop's parser for 2.3):

~~~ ruby
# 1
foo = -> {}
foo.
  call

# 2
foo = -> {}
foo.
  # comment
  call

# 3
foo = -> {}
foo
  .call

# 4
foo = -> {}
foo
  # comment
  .call
~~~

Any chance 4 could be fixed? (It looks more like a parser/spec bug than anything.)



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>