ruby-changes:57367
From: Nobuyoshi <ko1@a...>
Date: Thu, 29 Aug 2019 15:29:12 +0900 (JST)
Subject: [ruby-changes:57367] Nobuyoshi Nakada: 2ed68d0ff9 (master): Revert "Add pipeline operator [Feature #15799]"
https://git.ruby-lang.org/ruby.git/commit/?id=2ed68d0ff9 From 2ed68d0ff9a932efbc4393c869534040dec8f647 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Thu, 29 Aug 2019 15:09:43 +0900 Subject: Revert "Add pipeline operator [Feature #15799]" This reverts commits: * d365fd5a024254d7c105a62a015a7ea29ccf3e5d * d780c3662484d6072b3a6945b840049de72c2096 * aa7211836b769231a2a8ef6b6ec2fd0ec882ef29 * 043f010c28e82ea38978bf8ed885416f133b5b75 * bb4dd7c6af05c7821d572e2592ea3d0cc748d81f * 043f010c28e82ea38978bf8ed885416f133b5b75 * f169043d81524b5b529f2c1e9c35437ba5bc3a7a http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/94645 diff --git a/NEWS b/NEWS index 89f7c41..bc099d4 100644 --- a/NEWS +++ b/NEWS @@ -48,17 +48,6 @@ sufficient information, see the ChangeLog file or Redmine https://github.com/ruby/ruby/blob/trunk/NEWS#L48 " # This has been warned since 2.4 EOS -* Pipeline operator is experimentally added. - - This code equals to the next code. - - foo() - |> bar 1, 2 - |> display - - foo() - .bar(1, 2) - .display * The flip-flop syntax deprecation is reverted. [Feature #5400] diff --git a/defs/id.def b/defs/id.def index 1296b12..132e92c 100644 --- a/defs/id.def +++ b/defs/id.def @@ -117,7 +117,6 @@ token_ops = %[\ https://github.com/ruby/ruby/blob/trunk/defs/id.def#L117 OROP || ANDDOT &. METHREF .: - PIPE |> ] class KeywordError < RuntimeError diff --git a/ext/ripper/eventids2.c b/ext/ripper/eventids2.c index 663f8c1..ce4a285 100644 --- a/ext/ripper/eventids2.c +++ b/ext/ripper/eventids2.c @@ -262,7 +262,6 @@ static const struct token_assoc { https://github.com/ruby/ruby/blob/trunk/ext/ripper/eventids2.c#L262 {tDSTAR, O(op)}, {tANDDOT, O(op)}, {tMETHREF, O(op)}, - {tPIPE, O(op)}, {tSTRING_BEG, O(tstring_beg)}, {tSTRING_CONTENT, O(tstring_content)}, {tSTRING_DBEG, O(embexpr_beg)}, diff --git a/parse.y b/parse.y index ade2e0a..694db6b 100644 --- a/parse.y +++ b/parse.y @@ -1009,7 +1009,7 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in https://github.com/ruby/ruby/blob/trunk/parse.y#L1009 %type <node> literal numeric simple_numeric ssym dsym symbol cpath %type <node> top_compstmt top_stmts top_stmt begin_block %type <node> bodystmt compstmt stmts stmt_or_begin stmt expr arg primary command command_call method_call -%type <node> expr_value expr_value_do arg_value primary_value fcall rel_expr pipeline +%type <node> expr_value expr_value_do arg_value primary_value fcall rel_expr %type <node> if_tail opt_else case_body case_args cases opt_rescue exc_list exc_var opt_ensure %type <node> args call_args opt_call_args %type <node> paren_args opt_paren_args args_tail opt_args_tail block_args_tail opt_block_args_tail @@ -1067,7 +1067,6 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in https://github.com/ruby/ruby/blob/trunk/parse.y#L1067 %token <id> tANDDOT RUBY_TOKEN(ANDDOT) "&." %token <id> tCOLON2 RUBY_TOKEN(COLON2) "::" %token <id> tMETHREF RUBY_TOKEN(METHREF) ".:" -%token tPIPE RUBY_TOKEN(PIPE) "|>" %token tCOLON3 ":: at EXPR_BEG" %token <id> tOP_ASGN "operator-assignment" /* +=, -= etc. */ %token tASSOC "=>" @@ -1103,7 +1102,6 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in https://github.com/ruby/ruby/blob/trunk/parse.y#L1102 %nonassoc modifier_if modifier_unless modifier_while modifier_until %left keyword_or keyword_and %right keyword_not -%left tPIPE %nonassoc keyword_defined %right '=' tOP_ASGN %left modifier_rescue @@ -1512,37 +1510,6 @@ expr : command_call https://github.com/ruby/ruby/blob/trunk/parse.y#L1510 $$ = call_uni_op(p, method_cond(p, $2, &@2), '!', &@1, &@$); } | arg - | pipeline - ; - -pipeline : expr tPIPE operation opt_paren_args - { - /*%%%*/ - $$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, Qnull, &@3, &@$); - /*% %*/ - /*% ripper: command_call!($1, ID2VAL(idPIPE), $3, $4) %*/ - } - | expr tPIPE operation opt_paren_args brace_block - { - /*%%%*/ - $$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, $5, &@3, &@$); - /*% %*/ - /*% ripper: method_add_block!(command_call!($1, ID2VAL(idPIPE), $3, $4), $5) %*/ - } - | expr tPIPE operation command_args - { - /*%%%*/ - $$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, Qnull, &@3, &@$); - /*% %*/ - /*% ripper: command_call!($1, ID2VAL(idPIPE), $3, $4) %*/ - } - | expr tPIPE operation command_args do_block - { - /*%%%*/ - $$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, $5, &@3, &@$); - /*% %*/ - /*% ripper: method_add_block!(command_call!($1, ID2VAL(idPIPE), $3, $4), $5) %*/ - } ; expr_value : expr @@ -8710,11 +8677,10 @@ parser_yylex(struct parser_params *p) https://github.com/ruby/ruby/blob/trunk/parse.y#L8677 case '\13': /* '\v' */ space_seen = 1; break; - case '|': case '&': case '.': { dispatch_delayed_token(p, tIGNORED_NL); - if (c == '|' ? peek(p, '>') : (peek(p, '.') == (c == '&'))) { + if (peek(p, '.') == (c == '&')) { pushback(p, c); dispatch_scan_event(p, tSP); goto retry; @@ -8989,10 +8955,6 @@ parser_yylex(struct parser_params *p) https://github.com/ruby/ruby/blob/trunk/parse.y#L8955 SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } - if (c == '>') { - SET_LEX_STATE(EXPR_DOT); - return tPIPE; - } SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL); pushback(p, c); return '|'; diff --git a/test/ripper/test_scanner_events.rb b/test/ripper/test_scanner_events.rb index 02312ef..75ae294 100644 --- a/test/ripper/test_scanner_events.rb +++ b/test/ripper/test_scanner_events.rb @@ -573,8 +573,6 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ripper/test_scanner_events.rb#L573 scan('op', 'obj.:foo') assert_equal [], scan('op', %q[`make all`]) - assert_equal %w[|>], - scan('op', %q[x|>y]) end def test_symbeg diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index f0a2290..05e6de3 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1388,15 +1388,6 @@ eom https://github.com/ruby/ruby/blob/trunk/test/ruby/test_syntax.rb#L1388 assert_syntax_error('@1', /outside block/) end - def test_pipeline_operator - assert_valid_syntax('x |> y') - x = nil - assert_equal("121", eval('x = 12 |> pow(2) |> to_s 11')) - assert_equal(12, x) - assert_equal([2, 4, 6], eval("1.. |> take 3\n|> map do @1 * 2 end")) - assert_syntax_error('a|>-b', /unexpected '-'/) - end - def test_value_expr_in_condition mesg = /void value expression/ assert_syntax_error("tap {a = (true ? next : break)}", mesg) -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/