mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Revert "Add pipeline operator [Feature #15799]"
This reverts commits: *d365fd5a02
*d780c36624
*aa7211836b
*043f010c28
* bb4dd7c6af05c7821d572e2592ea3d0cc748d81f *043f010c28
*f169043d81
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/94645
This commit is contained in:
parent
893900dc78
commit
2ed68d0ff9
6 changed files with 2 additions and 64 deletions
11
NEWS
11
NEWS
|
@ -48,17 +48,6 @@ sufficient information, see the ChangeLog file or Redmine
|
||||||
" # This has been warned since 2.4
|
" # This has been warned since 2.4
|
||||||
EOS
|
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]
|
* The flip-flop syntax deprecation is reverted. [Feature #5400]
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,6 @@ token_ops = %[\
|
||||||
OROP ||
|
OROP ||
|
||||||
ANDDOT &.
|
ANDDOT &.
|
||||||
METHREF .:
|
METHREF .:
|
||||||
PIPE |>
|
|
||||||
]
|
]
|
||||||
|
|
||||||
class KeywordError < RuntimeError
|
class KeywordError < RuntimeError
|
||||||
|
|
|
@ -262,7 +262,6 @@ static const struct token_assoc {
|
||||||
{tDSTAR, O(op)},
|
{tDSTAR, O(op)},
|
||||||
{tANDDOT, O(op)},
|
{tANDDOT, O(op)},
|
||||||
{tMETHREF, O(op)},
|
{tMETHREF, O(op)},
|
||||||
{tPIPE, O(op)},
|
|
||||||
{tSTRING_BEG, O(tstring_beg)},
|
{tSTRING_BEG, O(tstring_beg)},
|
||||||
{tSTRING_CONTENT, O(tstring_content)},
|
{tSTRING_CONTENT, O(tstring_content)},
|
||||||
{tSTRING_DBEG, O(embexpr_beg)},
|
{tSTRING_DBEG, O(embexpr_beg)},
|
||||||
|
|
42
parse.y
42
parse.y
|
@ -1009,7 +1009,7 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in
|
||||||
%type <node> literal numeric simple_numeric ssym dsym symbol cpath
|
%type <node> literal numeric simple_numeric ssym dsym symbol cpath
|
||||||
%type <node> top_compstmt top_stmts top_stmt begin_block
|
%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> 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> 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> 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
|
%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
|
||||||
%token <id> tANDDOT RUBY_TOKEN(ANDDOT) "&."
|
%token <id> tANDDOT RUBY_TOKEN(ANDDOT) "&."
|
||||||
%token <id> tCOLON2 RUBY_TOKEN(COLON2) "::"
|
%token <id> tCOLON2 RUBY_TOKEN(COLON2) "::"
|
||||||
%token <id> tMETHREF RUBY_TOKEN(METHREF) ".:"
|
%token <id> tMETHREF RUBY_TOKEN(METHREF) ".:"
|
||||||
%token tPIPE RUBY_TOKEN(PIPE) "|>"
|
|
||||||
%token tCOLON3 ":: at EXPR_BEG"
|
%token tCOLON3 ":: at EXPR_BEG"
|
||||||
%token <id> tOP_ASGN "operator-assignment" /* +=, -= etc. */
|
%token <id> tOP_ASGN "operator-assignment" /* +=, -= etc. */
|
||||||
%token tASSOC "=>"
|
%token tASSOC "=>"
|
||||||
|
@ -1103,7 +1102,6 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in
|
||||||
%nonassoc modifier_if modifier_unless modifier_while modifier_until
|
%nonassoc modifier_if modifier_unless modifier_while modifier_until
|
||||||
%left keyword_or keyword_and
|
%left keyword_or keyword_and
|
||||||
%right keyword_not
|
%right keyword_not
|
||||||
%left tPIPE
|
|
||||||
%nonassoc keyword_defined
|
%nonassoc keyword_defined
|
||||||
%right '=' tOP_ASGN
|
%right '=' tOP_ASGN
|
||||||
%left modifier_rescue
|
%left modifier_rescue
|
||||||
|
@ -1512,37 +1510,6 @@ expr : command_call
|
||||||
$$ = call_uni_op(p, method_cond(p, $2, &@2), '!', &@1, &@$);
|
$$ = call_uni_op(p, method_cond(p, $2, &@2), '!', &@1, &@$);
|
||||||
}
|
}
|
||||||
| arg
|
| 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
|
expr_value : expr
|
||||||
|
@ -8710,11 +8677,10 @@ parser_yylex(struct parser_params *p)
|
||||||
case '\13': /* '\v' */
|
case '\13': /* '\v' */
|
||||||
space_seen = 1;
|
space_seen = 1;
|
||||||
break;
|
break;
|
||||||
case '|':
|
|
||||||
case '&':
|
case '&':
|
||||||
case '.': {
|
case '.': {
|
||||||
dispatch_delayed_token(p, tIGNORED_NL);
|
dispatch_delayed_token(p, tIGNORED_NL);
|
||||||
if (c == '|' ? peek(p, '>') : (peek(p, '.') == (c == '&'))) {
|
if (peek(p, '.') == (c == '&')) {
|
||||||
pushback(p, c);
|
pushback(p, c);
|
||||||
dispatch_scan_event(p, tSP);
|
dispatch_scan_event(p, tSP);
|
||||||
goto retry;
|
goto retry;
|
||||||
|
@ -8989,10 +8955,6 @@ parser_yylex(struct parser_params *p)
|
||||||
SET_LEX_STATE(EXPR_BEG);
|
SET_LEX_STATE(EXPR_BEG);
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
if (c == '>') {
|
|
||||||
SET_LEX_STATE(EXPR_DOT);
|
|
||||||
return tPIPE;
|
|
||||||
}
|
|
||||||
SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
|
SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
|
||||||
pushback(p, c);
|
pushback(p, c);
|
||||||
return '|';
|
return '|';
|
||||||
|
|
|
@ -573,8 +573,6 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
|
||||||
scan('op', 'obj.:foo')
|
scan('op', 'obj.:foo')
|
||||||
assert_equal [],
|
assert_equal [],
|
||||||
scan('op', %q[`make all`])
|
scan('op', %q[`make all`])
|
||||||
assert_equal %w[|>],
|
|
||||||
scan('op', %q[x|>y])
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_symbeg
|
def test_symbeg
|
||||||
|
|
|
@ -1388,15 +1388,6 @@ eom
|
||||||
assert_syntax_error('@1', /outside block/)
|
assert_syntax_error('@1', /outside block/)
|
||||||
end
|
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
|
def test_value_expr_in_condition
|
||||||
mesg = /void value expression/
|
mesg = /void value expression/
|
||||||
assert_syntax_error("tap {a = (true ? next : break)}", mesg)
|
assert_syntax_error("tap {a = (true ? next : break)}", mesg)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue