diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-12 05:17:06 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-12 05:17:06 +0000 |
commit | 68e16ddd7961b86e5013e62ae2954e88638de058 (patch) | |
tree | 45140bfa199d296d26a0d0cb39740c41d1e5261a | |
parent | 88edab89f4a0cabc9e10f2b8c8cf81cc3eda68c9 (diff) |
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
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | misc/ruby-mode.el | 2 | ||||
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 5 |
4 files changed, 14 insertions, 2 deletions
@@ -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). diff --git a/misc/ruby-mode.el b/misc/ruby-mode.el index 026f541364..77371cf30f 100644 --- a/misc/ruby-mode.el +++ b/misc/ruby-mode.el @@ -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; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 1f76425cad..985a46b532 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -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 |