ruby-changes:38364
From: shugo <ko1@a...>
Date: Fri, 8 May 2015 15:48:22 +0900 (JST)
Subject: [ruby-changes:38364] shugo:r50445 (trunk): Revert "support ES6-like hash literals."
shugo 2015-05-08 15:48:11 +0900 (Fri, 08 May 2015) New Revision: 50445 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=50445 Log: Revert "support ES6-like hash literals." This reverts commit 0d3797f8b62394f5634f4b2b529d28cb46bebf8a. Modified files: trunk/parse.y Index: parse.y =================================================================== --- parse.y (revision 50444) +++ parse.y (revision 50445) @@ -477,10 +477,6 @@ static int reg_fragment_check_gen(struct https://github.com/ruby/ruby/blob/trunk/parse.y#L477 static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match); #define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,(regexp),(match)) -static NODE *assoc_concat_gen(struct parser_params*,NODE*,NODE*); -#define assoc_concat(assocs,tail) assoc_concat_gen(parser,(assocs),(tail)) -static ID var_to_assoc_key(ID); - #define get_id(id) (id) #define get_value(val) (val) #else @@ -824,7 +820,7 @@ static void token_info_pop(struct parser https://github.com/ruby/ruby/blob/trunk/parse.y#L820 %type <node> command_asgn mrhs mrhs_arg superclass block_call block_command %type <node> f_block_optarg f_block_opt %type <node> f_arglist f_args f_arg f_arg_item f_optarg f_marg f_marg_list f_margs -%type <node> assoc_list assoc_items assoc_item assocs assoc undef_list backref string_dvar for_var +%type <node> assoc_list assocs assoc undef_list backref string_dvar for_var %type <node> block_param opt_block_param block_param_def f_opt %type <node> f_kwarg f_kw f_block_kwarg f_block_kw %type <node> bv_decls opt_bv_decl bvar @@ -5010,7 +5006,7 @@ singleton : var_ref https://github.com/ruby/ruby/blob/trunk/parse.y#L5006 ; assoc_list : none - | assoc_items trailer + | assocs trailer { /*%%%*/ $$ = $1; @@ -5020,38 +5016,6 @@ assoc_list : none https://github.com/ruby/ruby/blob/trunk/parse.y#L5016 } ; -assoc_items : assoc_item - /*%c%*/ - /*%c - { - $$ = rb_ary_new3(1, $1); - } - %*/ - | assoc_items ',' assoc_item - { - /*%%%*/ - $$ = assoc_concat($1, $3); - /*% - $$ = rb_ary_push($1, $3); - %*/ - } - ; - -assoc_item : assoc - | user_variable - { - /*%%%*/ - ID k = var_to_assoc_key($1); - NODE *key, *val; - key = NEW_LIT(ID2SYM(k)); - if (!(val = gettable($1))) val = NEW_BEGIN(0); - $$ = list_append(NEW_LIST(key), val); - /*% - $$ = dispatch2(assoc_new, $1, id_is_var(get_id($1)) ? dispatch1(var_ref, $1) : dispatch1(vcall, $1)); - %*/ - } - ; - assocs : assoc /*%c%*/ /*%c @@ -5062,7 +5026,21 @@ assocs : assoc https://github.com/ruby/ruby/blob/trunk/parse.y#L5026 | assocs ',' assoc { /*%%%*/ - $$ = assoc_concat($1, $3); + NODE *assocs = $1; + NODE *tail = $3; + if (!assocs) { + assocs = tail; + } + else if (tail) { + if (assocs->nd_head && + !tail->nd_head && nd_type(tail->nd_next) == NODE_ARRAY && + nd_type(tail->nd_next->nd_head) == NODE_HASH) { + /* DSTAR */ + tail = tail->nd_next->nd_head->nd_head; + } + assocs = list_concat(assocs, tail); + } + $$ = assocs; /*% $$ = rb_ary_push($1, $3); %*/ @@ -10449,39 +10427,6 @@ rb_parser_reg_compile(struct parser_para https://github.com/ruby/ruby/blob/trunk/parse.y#L10427 return re; } -static NODE * -assoc_concat_gen(struct parser_params *parser, NODE *assocs, NODE *tail) -{ - if (!assocs) { - assocs = tail; - } - else if (tail) { - if (assocs->nd_head && - !tail->nd_head && nd_type(tail->nd_next) == NODE_ARRAY && - nd_type(tail->nd_next->nd_head) == NODE_HASH) { - /* DSTAR */ - tail = tail->nd_next->nd_head->nd_head; - } - assocs = list_concat(assocs, tail); - } - return assocs; -} - -static ID var_to_assoc_key(ID var) -{ - switch (id_type(var)) { - case ID_LOCAL: - case ID_CONST: - return var; - default: { - const char *name = rb_id2name(var); - while (*name == '$' || *name == '@') - name++; - return rb_intern(name); - } - } -} - NODE* rb_parser_append_print(VALUE vparser, NODE *node) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/