parse.y: ANDDOT fluent interface

* parse.y (parser_yylex): ANDDOT at the head of the line denote
  line continuation from previous one to support fluent interface,
  as well as single dot.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-11-12 05:17:06 +00:00
Родитель 88edab89f4
Коммит 68e16ddd79
4 изменённых файлов: 14 добавлений и 2 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Thu Nov 12 14:17:01 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (parser_yylex): ANDDOT at the head of the line denote
line continuation from previous one to support fluent interface,
as well as single dot.
Thu Nov 12 13:49:50 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org>
* lib/rubygems: Update to RubyGems 2.5.0+ HEAD(db78980).

Просмотреть файл

@ -898,7 +898,7 @@ Emacs to Ruby."
(goto-char ruby-indent-point)
(beginning-of-line)
(skip-syntax-forward " ")
(if (looking-at "\\.[^.]")
(if (looking-at "\\.[^.]\\|&\\.")
(+ indent ruby-indent-level)
indent))))

Просмотреть файл

@ -8034,9 +8034,10 @@ parser_yylex(struct parser_params *parser)
case '\13': /* '\v' */
space_seen = 1;
break;
case '&':
case '.': {
dispatch_delayed_token(tIGNORED_NL);
if (!peek('.')) {
if (peek('.') == (c == '&')) {
pushback(c);
dispatch_scan_event(tSP);
goto retry;

Просмотреть файл

@ -628,6 +628,11 @@ eom
assert_syntax_error(":#\n foo", /unexpected ':'/)
end
def test_fluent_dot
assert_valid_syntax("a\n.foo")
assert_valid_syntax("a\n&.foo")
end
private
def not_label(x) @result = x; @not_label ||= nil end