ruby-internal 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/Rakefile +1 -1
  2. data/bin/ruby-internal-node-dump +1 -1
  3. data/bin/ruby-internal-obfuscate +1 -1
  4. data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +45 -45
  5. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +259 -258
  6. data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +43 -43
  7. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +261 -260
  8. data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +45 -45
  9. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +261 -260
  10. data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +37 -37
  11. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +219 -218
  12. data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +4 -0
  13. data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +41 -41
  14. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +231 -230
  15. data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +4 -0
  16. data/ext/cached/ruby-1.9.2/internal/node/node_type_descrip.c +37 -37
  17. data/ext/cached/ruby-1.9.2/internal/node/nodeinfo.c +206 -205
  18. data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +4 -0
  19. data/ext/cached/ruby-1.9.3/internal/node/node_type_descrip.c +41 -41
  20. data/ext/cached/ruby-1.9.3/internal/node/nodeinfo.c +230 -229
  21. data/ext/internal/binding/block.h +0 -20
  22. data/ext/internal/method/internal_method.h +5 -5
  23. data/ext/internal/module/classpath.c +13 -18
  24. data/ext/internal/module/classpath.h +3 -3
  25. data/ext/internal/module/getcfp.h +12 -0
  26. data/ext/internal/node/block.h +0 -20
  27. data/ext/internal/node/global_entry.h +31 -42
  28. data/ext/internal/node/global_entry.h.rpp +1 -1
  29. data/ext/internal/node/node_type_descrip.c +38 -47
  30. data/ext/internal/node/nodeinfo.c +311 -626
  31. data/ext/internal/node/nodeinfo.h +4 -1
  32. data/ext/internal/proc/block.h +0 -20
  33. data/ext/internal/tag/tag.h +0 -10
  34. data/ext/internal/vm/instruction/insns_info.c +5974 -3
  35. data/ext/internal/vm/instruction/insns_info.h +878 -0
  36. metadata +37 -51
@@ -450,28 +450,8 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
450
450
  return ID2SYM(n->nd_entry->id);
451
451
  }
452
452
  case NEN_FRML:
453
- if(n->nd_frml)
454
453
  {
455
- int node_type;
456
- if(0 && nd_type(n) == NODE_OP_ASGN2)
457
- {
458
- /* All children of NODE_OP_ASGN2 are NODE_OP_ASGN2_ARG */
459
- node_type = NODE_OP_ASGN2_ARG;
460
- }
461
- else
462
- {
463
- node_type = nd_type(n->nd_frml);
464
- }
465
-
466
- dump_node_or_iseq_to_hash(
467
- (VALUE)n->nd_frml,
468
- node_type,
469
- node_hash);
470
- return node_id(n->nd_frml);
471
- }
472
- else
473
- {
474
- return Qnil;
454
+ return LONG2NUM((long)n->nd_frml);
475
455
  }
476
456
  case NEN_HEAD:
477
457
  if(n->nd_head)
@@ -497,30 +477,6 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
497
477
  {
498
478
  return Qnil;
499
479
  }
500
- case NEN_IBDY:
501
- if(n->nd_ibdy)
502
- {
503
- int node_type;
504
- if(0 && nd_type(n) == NODE_OP_ASGN2)
505
- {
506
- /* All children of NODE_OP_ASGN2 are NODE_OP_ASGN2_ARG */
507
- node_type = NODE_OP_ASGN2_ARG;
508
- }
509
- else
510
- {
511
- node_type = nd_type(n->nd_ibdy);
512
- }
513
-
514
- dump_node_or_iseq_to_hash(
515
- (VALUE)n->nd_ibdy,
516
- node_type,
517
- node_hash);
518
- return node_id(n->nd_ibdy);
519
- }
520
- else
521
- {
522
- return Qnil;
523
- }
524
480
  case NEN_ITER:
525
481
  if(n->nd_iter)
526
482
  {
@@ -645,6 +601,19 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
645
601
  {
646
602
  return LONG2NUM((long)n->nd_nth);
647
603
  }
604
+ case NEN_OID:
605
+ if(n->nd_oid == 0)
606
+ {
607
+ return Qfalse;
608
+ }
609
+ else if(n->nd_oid == 1)
610
+ {
611
+ return Qtrue;
612
+ }
613
+ else
614
+ {
615
+ return ID2SYM(n->nd_oid);
616
+ }
648
617
  case NEN_OPT:
649
618
  if(n->nd_opt)
650
619
  {
@@ -711,6 +680,23 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
711
680
  INT2NUM(TYPE((VALUE)n->nd_orig)),
712
681
  (VALUE)n->nd_orig);
713
682
  }
683
+ case NEN_PID:
684
+ if(n->nd_pid == 0)
685
+ {
686
+ return Qfalse;
687
+ }
688
+ else if(n->nd_pid == 1)
689
+ {
690
+ return Qtrue;
691
+ }
692
+ else
693
+ {
694
+ return ID2SYM(n->nd_pid);
695
+ }
696
+ case NEN_PLEN:
697
+ {
698
+ return LONG2NUM((long)n->nd_plen);
699
+ }
714
700
  case NEN_RECV:
715
701
  if(n->nd_recv)
716
702
  {
@@ -760,28 +746,17 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
760
746
  return Qnil;
761
747
  }
762
748
  case NEN_REST:
763
- if(n->nd_rest)
749
+ if(n->nd_rest == 0)
764
750
  {
765
- int node_type;
766
- if(0 && nd_type(n) == NODE_OP_ASGN2)
767
- {
768
- /* All children of NODE_OP_ASGN2 are NODE_OP_ASGN2_ARG */
769
- node_type = NODE_OP_ASGN2_ARG;
770
- }
771
- else
772
- {
773
- node_type = nd_type(n->nd_rest);
774
- }
775
-
776
- dump_node_or_iseq_to_hash(
777
- (VALUE)n->nd_rest,
778
- node_type,
779
- node_hash);
780
- return node_id(n->nd_rest);
751
+ return Qfalse;
752
+ }
753
+ else if(n->nd_rest == 1)
754
+ {
755
+ return Qtrue;
781
756
  }
782
757
  else
783
758
  {
784
- return Qnil;
759
+ return ID2SYM(n->nd_rest);
785
760
  }
786
761
  case NEN_RVAL:
787
762
  if(n->nd_2nd)
@@ -980,6 +955,10 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
980
955
  {
981
956
  return ID2SYM(n->nd_vid);
982
957
  }
958
+ case NEN_VISI:
959
+ {
960
+ return LONG2NUM((long)n->nd_visi);
961
+ }
983
962
  }
984
963
  rb_raise(rb_eArgError, "Invalid Node_Elem_Name %d", nen);
985
964
  }
@@ -1386,27 +1365,7 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1386
1365
  }
1387
1366
  case NEN_FRML:
1388
1367
  {
1389
- if(v == Qnil)
1390
- {
1391
- n->nd_frml = 0;
1392
- }
1393
- else
1394
- {
1395
- VALUE nid = rb_hash_aref(id_hash, v);
1396
- if(RTEST(nid))
1397
- {
1398
- n->nd_frml = id_to_node(nid);
1399
- }
1400
- else
1401
- {
1402
- n->u1.node = (NODE *)load_node_or_iseq_from_hash(
1403
- v, node_hash, id_hash);
1404
- if(nd_type(n->u1.node) == NODE_OP_ASGN2_ARG)
1405
- {
1406
- nd_set_type(n->u1.node, NODE_OP_ASGN2);
1407
- }
1408
- }
1409
- }
1368
+ n->nd_frml = NUM2LONG(v);
1410
1369
  return;
1411
1370
  }
1412
1371
  case NEN_HEAD:
@@ -1434,31 +1393,6 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1434
1393
  }
1435
1394
  return;
1436
1395
  }
1437
- case NEN_IBDY:
1438
- {
1439
- if(v == Qnil)
1440
- {
1441
- n->nd_ibdy = 0;
1442
- }
1443
- else
1444
- {
1445
- VALUE nid = rb_hash_aref(id_hash, v);
1446
- if(RTEST(nid))
1447
- {
1448
- n->nd_ibdy = id_to_node(nid);
1449
- }
1450
- else
1451
- {
1452
- n->u2.node = (NODE *)load_node_or_iseq_from_hash(
1453
- v, node_hash, id_hash);
1454
- if(nd_type(n->u2.node) == NODE_OP_ASGN2_ARG)
1455
- {
1456
- nd_set_type(n->u2.node, NODE_OP_ASGN2);
1457
- }
1458
- }
1459
- }
1460
- return;
1461
- }
1462
1396
  case NEN_ITER:
1463
1397
  {
1464
1398
  if(v == Qnil)
@@ -1588,6 +1522,22 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1588
1522
  n->nd_nth = NUM2LONG(v);
1589
1523
  return;
1590
1524
  }
1525
+ case NEN_OID:
1526
+ {
1527
+ if(v == Qfalse)
1528
+ {
1529
+ n->nd_oid = 0;
1530
+ }
1531
+ else if(v == Qfalse)
1532
+ {
1533
+ n->nd_oid = 1;
1534
+ }
1535
+ else
1536
+ {
1537
+ n->nd_oid = SYM2ID(v);
1538
+ }
1539
+ return;
1540
+ }
1591
1541
  case NEN_OPT:
1592
1542
  {
1593
1543
  if(v == Qnil)
@@ -1650,6 +1600,27 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1650
1600
  }
1651
1601
  return;
1652
1602
  }
1603
+ case NEN_PID:
1604
+ {
1605
+ if(v == Qfalse)
1606
+ {
1607
+ n->nd_pid = 0;
1608
+ }
1609
+ else if(v == Qfalse)
1610
+ {
1611
+ n->nd_pid = 1;
1612
+ }
1613
+ else
1614
+ {
1615
+ n->nd_pid = SYM2ID(v);
1616
+ }
1617
+ return;
1618
+ }
1619
+ case NEN_PLEN:
1620
+ {
1621
+ n->nd_plen = NUM2LONG(v);
1622
+ return;
1623
+ }
1653
1624
  case NEN_RECV:
1654
1625
  {
1655
1626
  if(v == Qnil)
@@ -1702,26 +1673,17 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1702
1673
  }
1703
1674
  case NEN_REST:
1704
1675
  {
1705
- if(v == Qnil)
1676
+ if(v == Qfalse)
1706
1677
  {
1707
1678
  n->nd_rest = 0;
1708
1679
  }
1680
+ else if(v == Qfalse)
1681
+ {
1682
+ n->nd_rest = 1;
1683
+ }
1709
1684
  else
1710
1685
  {
1711
- VALUE nid = rb_hash_aref(id_hash, v);
1712
- if(RTEST(nid))
1713
- {
1714
- n->nd_rest = id_to_node(nid);
1715
- }
1716
- else
1717
- {
1718
- n->u2.node = (NODE *)load_node_or_iseq_from_hash(
1719
- v, node_hash, id_hash);
1720
- if(nd_type(n->u2.node) == NODE_OP_ASGN2_ARG)
1721
- {
1722
- nd_set_type(n->u2.node, NODE_OP_ASGN2);
1723
- }
1724
- }
1686
+ n->nd_rest = SYM2ID(v);
1725
1687
  }
1726
1688
  return;
1727
1689
  }
@@ -1959,6 +1921,11 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1959
1921
  }
1960
1922
  return;
1961
1923
  }
1924
+ case NEN_VISI:
1925
+ {
1926
+ n->nd_visi = NUM2LONG(v);
1927
+ return;
1928
+ }
1962
1929
  }
1963
1930
  rb_raise(rb_eRuntimeError, "Internal error: invalid Node_Elem_Name %d", nen);
1964
1931
  }
@@ -2048,16 +2015,6 @@ static VALUE node_alen(VALUE self)
2048
2015
  Data_Get_Struct(self, NODE, n);
2049
2016
  return LONG2NUM(n->nd_alen);
2050
2017
  }
2051
- /*
2052
- * Return the Node's _argc_ member. The return type is an
2053
- * Integer.
2054
- */
2055
- static VALUE node_argc(VALUE self)
2056
- {
2057
- NODE * n;
2058
- Data_Get_Struct(self, NODE, n);
2059
- return LONG2NUM(n->nd_argc);
2060
- }
2061
2018
  /*
2062
2019
  * Return the Node's _args_ member. The return type is
2063
2020
  * either a Node or an Object.
@@ -2155,33 +2112,6 @@ static VALUE node_cfnc(VALUE self)
2155
2112
  Data_Get_Struct(self, NODE, n);
2156
2113
  return LONG2NUM((long)(n->nd_cfnc));
2157
2114
  }
2158
- /*
2159
- * Return the Node's _clss_ member. The return type is
2160
- * either a Node or an Object.
2161
- */
2162
- static VALUE node_clss(VALUE self)
2163
- {
2164
- NODE * n;
2165
- Data_Get_Struct(self, NODE, n);
2166
-
2167
- if(TYPE(n->nd_clss) == T_NODE)
2168
- {
2169
- if(0 && nd_type(n) == NODE_OP_ASGN2)
2170
- {
2171
- return wrap_node_as(
2172
- (NODE *)n->nd_clss,
2173
- rb_cNodeSubclass[NODE_OP_ASGN2_ARG]);
2174
- }
2175
- else
2176
- {
2177
- return wrap_node((NODE *)n->nd_clss);
2178
- }
2179
- }
2180
- else
2181
- {
2182
- return (VALUE)n->nd_clss;
2183
- }
2184
- }
2185
2115
  /*
2186
2116
  * Return the Node's _cnt_ member. The return type is an
2187
2117
  * Integer.
@@ -2574,33 +2504,6 @@ static VALUE node_opt(VALUE self)
2574
2504
  return (VALUE)n->nd_opt;
2575
2505
  }
2576
2506
  }
2577
- /*
2578
- * Return the Node's _orig_ member. The return type is
2579
- * either a Node or an Object.
2580
- */
2581
- static VALUE node_orig(VALUE self)
2582
- {
2583
- NODE * n;
2584
- Data_Get_Struct(self, NODE, n);
2585
-
2586
- if(TYPE(n->nd_orig) == T_NODE)
2587
- {
2588
- if(0 && nd_type(n) == NODE_OP_ASGN2)
2589
- {
2590
- return wrap_node_as(
2591
- (NODE *)n->nd_orig,
2592
- rb_cNodeSubclass[NODE_OP_ASGN2_ARG]);
2593
- }
2594
- else
2595
- {
2596
- return wrap_node((NODE *)n->nd_orig);
2597
- }
2598
- }
2599
- else
2600
- {
2601
- return (VALUE)n->nd_orig;
2602
- }
2603
- }
2604
2507
  /*
2605
2508
  * Return the Node's _recv_ member. The return type is
2606
2509
  * either a Node or an Object.
@@ -2656,30 +2559,24 @@ static VALUE node_resq(VALUE self)
2656
2559
  }
2657
2560
  }
2658
2561
  /*
2659
- * Return the Node's _rest_ member. The return type is
2660
- * either a Node or an Object.
2562
+ * Return the Node's _rest_ member. The return type is a
2563
+ * Symbol.
2661
2564
  */
2662
2565
  static VALUE node_rest(VALUE self)
2663
2566
  {
2664
2567
  NODE * n;
2665
2568
  Data_Get_Struct(self, NODE, n);
2666
-
2667
- if(TYPE(n->nd_rest) == T_NODE)
2569
+ if(n->nd_rest == 0)
2668
2570
  {
2669
- if(0 && nd_type(n) == NODE_OP_ASGN2)
2670
- {
2671
- return wrap_node_as(
2672
- (NODE *)n->nd_rest,
2673
- rb_cNodeSubclass[NODE_OP_ASGN2_ARG]);
2674
- }
2675
- else
2676
- {
2677
- return wrap_node((NODE *)n->nd_rest);
2678
- }
2571
+ return Qfalse;
2572
+ }
2573
+ else if(n->nd_rest == 1)
2574
+ {
2575
+ return Qtrue;
2679
2576
  }
2680
2577
  else
2681
2578
  {
2682
- return (VALUE)n->nd_rest;
2579
+ return ID2SYM(n->nd_rest);
2683
2580
  }
2684
2581
  }
2685
2582
  /*
@@ -2925,10 +2822,10 @@ void define_node_subclass_methods()
2925
2822
  rb_iv_set(rb_cALIAS, "__member__", members);
2926
2823
  rb_iv_set(rb_cALIAS, "__type__", INT2NUM(NODE_ALIAS));
2927
2824
  rb_define_singleton_method(rb_cALIAS, "members", node_s_members, 0);
2928
- rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2929
- rb_ary_push(members, rb_str_new2("second"));
2930
2825
  rb_define_method(rb_cALIAS, "first", node_1st, 0);
2931
2826
  rb_ary_push(members, rb_str_new2("first"));
2827
+ rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2828
+ rb_ary_push(members, rb_str_new2("second"));
2932
2829
  }
2933
2830
 
2934
2831
  /* Document-class: Node::ALLOCA
@@ -2946,6 +2843,12 @@ void define_node_subclass_methods()
2946
2843
  rb_iv_set(rb_cALLOCA, "__type__", INT2NUM(NODE_ALLOCA));
2947
2844
  rb_define_singleton_method(rb_cALLOCA, "members", node_s_members, 0);
2948
2845
 
2846
+ /* Document-method: cfnc
2847
+ * a pointer to the allocated memory
2848
+ */
2849
+ rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
2850
+ rb_ary_push(members, rb_str_new2("cfnc"));
2851
+
2949
2852
  /* Document-method: value
2950
2853
  * a pointer to the previously allocated temporary node
2951
2854
  */
@@ -2957,12 +2860,6 @@ void define_node_subclass_methods()
2957
2860
  */
2958
2861
  rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2959
2862
  rb_ary_push(members, rb_str_new2("cnt"));
2960
-
2961
- /* Document-method: cfnc
2962
- * a pointer to the allocated memory
2963
- */
2964
- rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
2965
- rb_ary_push(members, rb_str_new2("cfnc"));
2966
2863
  }
2967
2864
  #endif
2968
2865
 
@@ -3011,24 +2908,24 @@ void define_node_subclass_methods()
3011
2908
  rb_define_method(rb_cARGS, "rest", node_rest, 0);
3012
2909
  rb_ary_push(members, rb_str_new2("rest"));
3013
2910
 
3014
- /* Document-method: cnt
3015
- * the number of required arguments
3016
- */
3017
- rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
3018
- rb_ary_push(members, rb_str_new2("cnt"));
3019
-
3020
2911
  /* Document-method: opt
3021
2912
  * a list of assignment nodes to assign default values to the
3022
2913
  * optional arguments if no argument is specified
3023
2914
  */
3024
2915
  rb_define_method(rb_cARGS, "opt", node_opt, 0);
3025
2916
  rb_ary_push(members, rb_str_new2("opt"));
3026
- }
3027
2917
 
3028
- /* Document-class: Node::ARGSCAT
3029
- * Represents the concatenation of a list of arguments and a splatted
3030
- * value, e.g.:
3031
- * a, b, *value
2918
+ /* Document-method: cnt
2919
+ * the number of required arguments
2920
+ */
2921
+ rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
2922
+ rb_ary_push(members, rb_str_new2("cnt"));
2923
+ }
2924
+
2925
+ /* Document-class: Node::ARGSCAT
2926
+ * Represents the concatenation of a list of arguments and a splatted
2927
+ * value, e.g.:
2928
+ * a, b, *value
3032
2929
  * Evaluates head to create an array. Evaluates body and performs a
3033
2930
  * splat operation on the result to create another array (see SPLAT).
3034
2931
  * Concatenates the the second array onto the end of the first to
@@ -3088,20 +2985,20 @@ void define_node_subclass_methods()
3088
2985
  rb_iv_set(rb_cARRAY, "__member__", members);
3089
2986
  rb_iv_set(rb_cARRAY, "__type__", INT2NUM(NODE_ARRAY));
3090
2987
  rb_define_singleton_method(rb_cARRAY, "members", node_s_members, 0);
3091
-
3092
- /* Document-method: next
3093
- * the tail of the array
3094
- */
3095
- rb_define_method(rb_cARRAY, "next", node_next, 0);
3096
- rb_ary_push(members, rb_str_new2("next"));
2988
+ rb_define_method(rb_cARRAY, "alen", node_alen, 0);
2989
+ rb_ary_push(members, rb_str_new2("alen"));
3097
2990
 
3098
2991
  /* Document-method: head
3099
2992
  * the first element of the array
3100
2993
  */
3101
2994
  rb_define_method(rb_cARRAY, "head", node_head, 0);
3102
2995
  rb_ary_push(members, rb_str_new2("head"));
3103
- rb_define_method(rb_cARRAY, "alen", node_alen, 0);
3104
- rb_ary_push(members, rb_str_new2("alen"));
2996
+
2997
+ /* Document-method: next
2998
+ * the tail of the array
2999
+ */
3000
+ rb_define_method(rb_cARRAY, "next", node_next, 0);
3001
+ rb_ary_push(members, rb_str_new2("next"));
3105
3002
  }
3106
3003
 
3107
3004
  /* Document-class: Node::ATTRASGN
@@ -3118,12 +3015,6 @@ void define_node_subclass_methods()
3118
3015
  rb_iv_set(rb_cATTRASGN, "__type__", INT2NUM(NODE_ATTRASGN));
3119
3016
  rb_define_singleton_method(rb_cATTRASGN, "members", node_s_members, 0);
3120
3017
 
3121
- /* Document-method: mid
3122
- * the id of the attribute, with a trailing '=' sign
3123
- */
3124
- rb_define_method(rb_cATTRASGN, "mid", node_mid, 0);
3125
- rb_ary_push(members, rb_str_new2("mid"));
3126
-
3127
3018
  /* Document-method: recv
3128
3019
  * the receiver of the method
3129
3020
  */
@@ -3135,27 +3026,12 @@ void define_node_subclass_methods()
3135
3026
  */
3136
3027
  rb_define_method(rb_cATTRASGN, "args", node_args, 0);
3137
3028
  rb_ary_push(members, rb_str_new2("args"));
3138
- }
3139
-
3140
- /* Document-class: Node::ATTRSET
3141
- * A placeholder for an attribute writer method, which can added to a
3142
- * class by using attr_writer:
3143
- * attr_writer :attribute
3144
- * Its reader counterpart is IVAR.
3145
- */
3146
- {
3147
- VALUE rb_cATTRSET = rb_define_class_under(rb_cNode, "ATTRSET", rb_cNode);
3148
- members = rb_ary_new();
3149
- rb_cNodeSubclass[NODE_ATTRSET] = rb_cATTRSET;
3150
- rb_iv_set(rb_cATTRSET, "__member__", members);
3151
- rb_iv_set(rb_cATTRSET, "__type__", INT2NUM(NODE_ATTRSET));
3152
- rb_define_singleton_method(rb_cATTRSET, "members", node_s_members, 0);
3153
3029
 
3154
- /* Document-method: vid
3155
- * the name of the attribute, with a leading '@' sign
3030
+ /* Document-method: mid
3031
+ * the id of the attribute, with a trailing '=' sign
3156
3032
  */
3157
- rb_define_method(rb_cATTRSET, "vid", node_vid, 0);
3158
- rb_ary_push(members, rb_str_new2("vid"));
3033
+ rb_define_method(rb_cATTRASGN, "mid", node_mid, 0);
3034
+ rb_ary_push(members, rb_str_new2("mid"));
3159
3035
  }
3160
3036
 
3161
3037
  /* Document-class: Node::BACK_REF
@@ -3222,17 +3098,17 @@ void define_node_subclass_methods()
3222
3098
  rb_iv_set(rb_cBLOCK, "__type__", INT2NUM(NODE_BLOCK));
3223
3099
  rb_define_singleton_method(rb_cBLOCK, "members", node_s_members, 0);
3224
3100
 
3225
- /* Document-method: next
3226
- * the second expression in the block of code
3227
- */
3228
- rb_define_method(rb_cBLOCK, "next", node_next, 0);
3229
- rb_ary_push(members, rb_str_new2("next"));
3230
-
3231
3101
  /* Document-method: head
3232
3102
  * the first expression in the block of code
3233
3103
  */
3234
3104
  rb_define_method(rb_cBLOCK, "head", node_head, 0);
3235
3105
  rb_ary_push(members, rb_str_new2("head"));
3106
+
3107
+ /* Document-method: next
3108
+ * the second expression in the block of code
3109
+ */
3110
+ rb_define_method(rb_cBLOCK, "next", node_next, 0);
3111
+ rb_ary_push(members, rb_str_new2("next"));
3236
3112
  }
3237
3113
 
3238
3114
  /* Document-class: Node::BLOCK_ARG
@@ -3340,6 +3216,12 @@ void define_node_subclass_methods()
3340
3216
  rb_iv_set(rb_cCALL, "__type__", INT2NUM(NODE_CALL));
3341
3217
  rb_define_singleton_method(rb_cCALL, "members", node_s_members, 0);
3342
3218
 
3219
+ /* Document-method: args
3220
+ * the arguments to the method
3221
+ */
3222
+ rb_define_method(rb_cCALL, "args", node_args, 0);
3223
+ rb_ary_push(members, rb_str_new2("args"));
3224
+
3343
3225
  /* Document-method: mid
3344
3226
  * the method id
3345
3227
  */
@@ -3351,12 +3233,6 @@ void define_node_subclass_methods()
3351
3233
  */
3352
3234
  rb_define_method(rb_cCALL, "recv", node_recv, 0);
3353
3235
  rb_ary_push(members, rb_str_new2("recv"));
3354
-
3355
- /* Document-method: args
3356
- * the arguments to the method
3357
- */
3358
- rb_define_method(rb_cCALL, "args", node_args, 0);
3359
- rb_ary_push(members, rb_str_new2("args"));
3360
3236
  }
3361
3237
 
3362
3238
  /* Document-class: Node::CASE
@@ -3373,8 +3249,6 @@ void define_node_subclass_methods()
3373
3249
  rb_iv_set(rb_cCASE, "__member__", members);
3374
3250
  rb_iv_set(rb_cCASE, "__type__", INT2NUM(NODE_CASE));
3375
3251
  rb_define_singleton_method(rb_cCASE, "members", node_s_members, 0);
3376
- rb_define_method(rb_cCASE, "next", node_next, 0);
3377
- rb_ary_push(members, rb_str_new2("next"));
3378
3252
 
3379
3253
  /* Document-method: head
3380
3254
  * the value to select on
@@ -3388,6 +3262,8 @@ void define_node_subclass_methods()
3388
3262
  */
3389
3263
  rb_define_method(rb_cCASE, "body", node_body, 0);
3390
3264
  rb_ary_push(members, rb_str_new2("body"));
3265
+ rb_define_method(rb_cCASE, "next", node_next, 0);
3266
+ rb_ary_push(members, rb_str_new2("next"));
3391
3267
  }
3392
3268
 
3393
3269
  /* Document-class: Node::CDECL
@@ -3415,22 +3291,6 @@ void define_node_subclass_methods()
3415
3291
  rb_ary_push(members, rb_str_new2("vid"));
3416
3292
  }
3417
3293
 
3418
- /* Document-class: Node::CFUNC
3419
- * A placeholder for a function implemented in C.
3420
- */
3421
- {
3422
- VALUE rb_cCFUNC = rb_define_class_under(rb_cNode, "CFUNC", rb_cNode);
3423
- members = rb_ary_new();
3424
- rb_cNodeSubclass[NODE_CFUNC] = rb_cCFUNC;
3425
- rb_iv_set(rb_cCFUNC, "__member__", members);
3426
- rb_iv_set(rb_cCFUNC, "__type__", INT2NUM(NODE_CFUNC));
3427
- rb_define_singleton_method(rb_cCFUNC, "members", node_s_members, 0);
3428
- rb_define_method(rb_cCFUNC, "cfnc", node_cfnc, 0);
3429
- rb_ary_push(members, rb_str_new2("cfnc"));
3430
- rb_define_method(rb_cCFUNC, "argc", node_argc, 0);
3431
- rb_ary_push(members, rb_str_new2("argc"));
3432
- }
3433
-
3434
3294
  /* Document-class: Node::CLASS
3435
3295
  * Represents a class definition, e.g.:
3436
3296
  * class cpath
@@ -3491,17 +3351,17 @@ void define_node_subclass_methods()
3491
3351
  rb_iv_set(rb_cCOLON2, "__type__", INT2NUM(NODE_COLON2));
3492
3352
  rb_define_singleton_method(rb_cCOLON2, "members", node_s_members, 0);
3493
3353
 
3494
- /* Document-method: mid
3495
- * the name of the method or constant to call/look up
3496
- */
3497
- rb_define_method(rb_cCOLON2, "mid", node_mid, 0);
3498
- rb_ary_push(members, rb_str_new2("mid"));
3499
-
3500
3354
  /* Document-method: head
3501
3355
  * an expression specifying the class in which to do the lookup
3502
3356
  */
3503
3357
  rb_define_method(rb_cCOLON2, "head", node_head, 0);
3504
3358
  rb_ary_push(members, rb_str_new2("head"));
3359
+
3360
+ /* Document-method: mid
3361
+ * the name of the method or constant to call/look up
3362
+ */
3363
+ rb_define_method(rb_cCOLON2, "mid", node_mid, 0);
3364
+ rb_ary_push(members, rb_str_new2("mid"));
3505
3365
  }
3506
3366
 
3507
3367
  /* Document-class: Node::COLON3
@@ -3544,41 +3404,6 @@ void define_node_subclass_methods()
3544
3404
  rb_ary_push(members, rb_str_new2("vid"));
3545
3405
  }
3546
3406
 
3547
- /* Document-class: Node::CREF
3548
- * A temporary node used to store the value of ruby_cref or
3549
- * ruby_top_cref and later restore it. The cref holds a reference to
3550
- * the cbase, which, among other things, is used for constant and class
3551
- * variable lookup.
3552
- *
3553
- * It should never be evaluated as an expression.
3554
- */
3555
- {
3556
- VALUE rb_cCREF = rb_define_class_under(rb_cNode, "CREF", rb_cNode);
3557
- members = rb_ary_new();
3558
- rb_cNodeSubclass[NODE_CREF] = rb_cCREF;
3559
- rb_iv_set(rb_cCREF, "__member__", members);
3560
- rb_iv_set(rb_cCREF, "__type__", INT2NUM(NODE_CREF));
3561
- rb_define_singleton_method(rb_cCREF, "members", node_s_members, 0);
3562
-
3563
- /* Document-method: next
3564
- * the previous value of ruby_cref or ruby_top_cref
3565
- */
3566
- rb_define_method(rb_cCREF, "next", node_next, 0);
3567
- rb_ary_push(members, rb_str_new2("next"));
3568
-
3569
- /* Document-method: body
3570
- * always 0 (false)
3571
- */
3572
- rb_define_method(rb_cCREF, "body", node_body, 0);
3573
- rb_ary_push(members, rb_str_new2("body"));
3574
-
3575
- /* Document-method: clss
3576
- * the new class to use for the cbase.
3577
- */
3578
- rb_define_method(rb_cCREF, "clss", node_clss, 0);
3579
- rb_ary_push(members, rb_str_new2("clss"));
3580
- }
3581
-
3582
3407
  /* Document-class: Node::CVAR
3583
3408
  * Represents a class variable retrieval. The result of the expression
3584
3409
  * is the value of the class variable.
@@ -3741,6 +3566,12 @@ void define_node_subclass_methods()
3741
3566
  rb_iv_set(rb_cDEFN, "__type__", INT2NUM(NODE_DEFN));
3742
3567
  rb_define_singleton_method(rb_cDEFN, "members", node_s_members, 0);
3743
3568
 
3569
+ /* Document-method: defn
3570
+ * the body of the method definition
3571
+ */
3572
+ rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3573
+ rb_ary_push(members, rb_str_new2("defn"));
3574
+
3744
3575
  /* Document-method: mid
3745
3576
  * the name of the method* defn the body of the method
3746
3577
  */
@@ -3752,12 +3583,6 @@ void define_node_subclass_methods()
3752
3583
  */
3753
3584
  rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3754
3585
  rb_ary_push(members, rb_str_new2("noex"));
3755
-
3756
- /* Document-method: defn
3757
- * the body of the method definition
3758
- */
3759
- rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3760
- rb_ary_push(members, rb_str_new2("defn"));
3761
3586
  }
3762
3587
 
3763
3588
  /* Document-class: Node::DEFS
@@ -3773,12 +3598,6 @@ void define_node_subclass_methods()
3773
3598
  rb_iv_set(rb_cDEFS, "__member__", members);
3774
3599
  rb_iv_set(rb_cDEFS, "__type__", INT2NUM(NODE_DEFS));
3775
3600
  rb_define_singleton_method(rb_cDEFS, "members", node_s_members, 0);
3776
-
3777
- /* Document-method: mid
3778
- * the name of the method* defn the body of the method
3779
- */
3780
- rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3781
- rb_ary_push(members, rb_str_new2("mid"));
3782
3601
  rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3783
3602
  rb_ary_push(members, rb_str_new2("defn"));
3784
3603
 
@@ -3787,29 +3606,12 @@ void define_node_subclass_methods()
3787
3606
  */
3788
3607
  rb_define_method(rb_cDEFS, "recv", node_recv, 0);
3789
3608
  rb_ary_push(members, rb_str_new2("recv"));
3790
- }
3791
-
3792
- /* Document-class: Node::DMETHOD
3793
- * A placeholder for a method defined using define_method where the
3794
- * passed block is created from a Method object, e.g.:
3795
- * define_method(:name, method(:foo))
3796
- *
3797
- * See also BMETHOD.
3798
- */
3799
- {
3800
- VALUE rb_cDMETHOD = rb_define_class_under(rb_cNode, "DMETHOD", rb_cNode);
3801
- members = rb_ary_new();
3802
- rb_cNodeSubclass[NODE_DMETHOD] = rb_cDMETHOD;
3803
- rb_iv_set(rb_cDMETHOD, "__member__", members);
3804
- rb_iv_set(rb_cDMETHOD, "__type__", INT2NUM(NODE_DMETHOD));
3805
- rb_define_singleton_method(rb_cDMETHOD, "members", node_s_members, 0);
3806
3609
 
3807
- /* Document-method: cval
3808
- * the Method object passed to define_method, which contains the
3809
- * body of the method
3610
+ /* Document-method: mid
3611
+ * the name of the method* defn the body of the method
3810
3612
  */
3811
- rb_define_method(rb_cDMETHOD, "cval", node_cval, 0);
3812
- rb_ary_push(members, rb_str_new2("cval"));
3613
+ rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3614
+ rb_ary_push(members, rb_str_new2("mid"));
3813
3615
  }
3814
3616
 
3815
3617
  /* Document-class: Node::DOT2
@@ -3824,20 +3626,20 @@ void define_node_subclass_methods()
3824
3626
  rb_iv_set(rb_cDOT2, "__member__", members);
3825
3627
  rb_iv_set(rb_cDOT2, "__type__", INT2NUM(NODE_DOT2));
3826
3628
  rb_define_singleton_method(rb_cDOT2, "members", node_s_members, 0);
3827
- rb_define_method(rb_cDOT2, "state", node_state, 0);
3828
- rb_ary_push(members, rb_str_new2("state"));
3829
-
3830
- /* Document-method: end
3831
- * the end of the range
3832
- */
3833
- rb_define_method(rb_cDOT2, "end", node_end, 0);
3834
- rb_ary_push(members, rb_str_new2("end"));
3835
3629
 
3836
3630
  /* Document-method: beg
3837
3631
  * the beginning of the range
3838
3632
  */
3839
3633
  rb_define_method(rb_cDOT2, "beg", node_beg, 0);
3840
3634
  rb_ary_push(members, rb_str_new2("beg"));
3635
+
3636
+ /* Document-method: end
3637
+ * the end of the range
3638
+ */
3639
+ rb_define_method(rb_cDOT2, "end", node_end, 0);
3640
+ rb_ary_push(members, rb_str_new2("end"));
3641
+ rb_define_method(rb_cDOT2, "state", node_state, 0);
3642
+ rb_ary_push(members, rb_str_new2("state"));
3841
3643
  }
3842
3644
 
3843
3645
  /* Document-class: Node::DOT3
@@ -3852,20 +3654,20 @@ void define_node_subclass_methods()
3852
3654
  rb_iv_set(rb_cDOT3, "__member__", members);
3853
3655
  rb_iv_set(rb_cDOT3, "__type__", INT2NUM(NODE_DOT3));
3854
3656
  rb_define_singleton_method(rb_cDOT3, "members", node_s_members, 0);
3855
- rb_define_method(rb_cDOT3, "state", node_state, 0);
3856
- rb_ary_push(members, rb_str_new2("state"));
3857
-
3858
- /* Document-method: end
3859
- * the end of the range
3860
- */
3861
- rb_define_method(rb_cDOT3, "end", node_end, 0);
3862
- rb_ary_push(members, rb_str_new2("end"));
3863
3657
 
3864
3658
  /* Document-method: beg
3865
3659
  * the beginning of the range
3866
3660
  */
3867
3661
  rb_define_method(rb_cDOT3, "beg", node_beg, 0);
3868
3662
  rb_ary_push(members, rb_str_new2("beg"));
3663
+
3664
+ /* Document-method: end
3665
+ * the end of the range
3666
+ */
3667
+ rb_define_method(rb_cDOT3, "end", node_end, 0);
3668
+ rb_ary_push(members, rb_str_new2("end"));
3669
+ rb_define_method(rb_cDOT3, "state", node_state, 0);
3670
+ rb_ary_push(members, rb_str_new2("state"));
3869
3671
  }
3870
3672
 
3871
3673
  /* Document-class: Node::DREGX
@@ -4121,38 +3923,6 @@ void define_node_subclass_methods()
4121
3923
  rb_define_singleton_method(rb_cFALSE, "members", node_s_members, 0);
4122
3924
  }
4123
3925
 
4124
- /* Document-class: Node::FBODY
4125
- * A placeholder for a method alias, which can be added to a class by
4126
- * using alias or alias_method:
4127
- * alias old new
4128
- */
4129
- {
4130
- VALUE rb_cFBODY = rb_define_class_under(rb_cNode, "FBODY", rb_cNode);
4131
- members = rb_ary_new();
4132
- rb_cNodeSubclass[NODE_FBODY] = rb_cFBODY;
4133
- rb_iv_set(rb_cFBODY, "__member__", members);
4134
- rb_iv_set(rb_cFBODY, "__type__", INT2NUM(NODE_FBODY));
4135
- rb_define_singleton_method(rb_cFBODY, "members", node_s_members, 0);
4136
-
4137
- /* Document-method: orig
4138
- * the origin class
4139
- */
4140
- rb_define_method(rb_cFBODY, "orig", node_orig, 0);
4141
- rb_ary_push(members, rb_str_new2("orig"));
4142
-
4143
- /* Document-method: mid
4144
- * the name of the method
4145
- */
4146
- rb_define_method(rb_cFBODY, "mid", node_mid, 0);
4147
- rb_ary_push(members, rb_str_new2("mid"));
4148
-
4149
- /* Document-method: head
4150
- * the method body
4151
- */
4152
- rb_define_method(rb_cFBODY, "head", node_head, 0);
4153
- rb_ary_push(members, rb_str_new2("head"));
4154
- }
4155
-
4156
3926
  /* Document-class: Node::FCALL
4157
3927
  * Represents a method call in the form:
4158
3928
  * mid(args).
@@ -4168,17 +3938,17 @@ void define_node_subclass_methods()
4168
3938
  rb_iv_set(rb_cFCALL, "__type__", INT2NUM(NODE_FCALL));
4169
3939
  rb_define_singleton_method(rb_cFCALL, "members", node_s_members, 0);
4170
3940
 
4171
- /* Document-method: mid
4172
- * the method id
4173
- */
4174
- rb_define_method(rb_cFCALL, "mid", node_mid, 0);
4175
- rb_ary_push(members, rb_str_new2("mid"));
4176
-
4177
3941
  /* Document-method: args
4178
3942
  * the arguments to the method
4179
3943
  */
4180
3944
  rb_define_method(rb_cFCALL, "args", node_args, 0);
4181
3945
  rb_ary_push(members, rb_str_new2("args"));
3946
+
3947
+ /* Document-method: mid
3948
+ * the method id
3949
+ */
3950
+ rb_define_method(rb_cFCALL, "mid", node_mid, 0);
3951
+ rb_ary_push(members, rb_str_new2("mid"));
4182
3952
  }
4183
3953
 
4184
3954
  /* Document-class: Node::FLIP2
@@ -4202,17 +3972,17 @@ void define_node_subclass_methods()
4202
3972
  rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4203
3973
  rb_ary_push(members, rb_str_new2("cnt"));
4204
3974
 
4205
- /* Document-method: end
4206
- * the end of the range
4207
- */
4208
- rb_define_method(rb_cFLIP2, "end", node_end, 0);
4209
- rb_ary_push(members, rb_str_new2("end"));
4210
-
4211
3975
  /* Document-method: beg
4212
3976
  * the beginning of the range
4213
3977
  */
4214
3978
  rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4215
3979
  rb_ary_push(members, rb_str_new2("beg"));
3980
+
3981
+ /* Document-method: end
3982
+ * the end of the range
3983
+ */
3984
+ rb_define_method(rb_cFLIP2, "end", node_end, 0);
3985
+ rb_ary_push(members, rb_str_new2("end"));
4216
3986
  }
4217
3987
 
4218
3988
  /* Document-class: Node::FLIP3
@@ -4236,17 +4006,17 @@ void define_node_subclass_methods()
4236
4006
  rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4237
4007
  rb_ary_push(members, rb_str_new2("cnt"));
4238
4008
 
4239
- /* Document-method: end
4240
- * the end of the range
4241
- */
4242
- rb_define_method(rb_cFLIP3, "end", node_end, 0);
4243
- rb_ary_push(members, rb_str_new2("end"));
4244
-
4245
4009
  /* Document-method: beg
4246
4010
  * the beginning of the range
4247
4011
  */
4248
4012
  rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4249
4013
  rb_ary_push(members, rb_str_new2("beg"));
4014
+
4015
+ /* Document-method: end
4016
+ * the end of the range
4017
+ */
4018
+ rb_define_method(rb_cFLIP3, "end", node_end, 0);
4019
+ rb_ary_push(members, rb_str_new2("end"));
4250
4020
  }
4251
4021
 
4252
4022
  /* Document-class: Node::FOR
@@ -4271,14 +4041,6 @@ void define_node_subclass_methods()
4271
4041
  rb_iv_set(rb_cFOR, "__type__", INT2NUM(NODE_FOR));
4272
4042
  rb_define_singleton_method(rb_cFOR, "members", node_s_members, 0);
4273
4043
 
4274
- /* Document-method: var
4275
- * an assignment node which assigns the next value in the sequence
4276
- * to a variable, which may or may not be local. May also be a
4277
- * multiple assignment.
4278
- */
4279
- rb_define_method(rb_cFOR, "var", node_var, 0);
4280
- rb_ary_push(members, rb_str_new2("var"));
4281
-
4282
4044
  /* Document-method: body
4283
4045
  * the body of the loop
4284
4046
  */
@@ -4290,6 +4052,14 @@ void define_node_subclass_methods()
4290
4052
  */
4291
4053
  rb_define_method(rb_cFOR, "iter", node_iter, 0);
4292
4054
  rb_ary_push(members, rb_str_new2("iter"));
4055
+
4056
+ /* Document-method: var
4057
+ * an assignment node which assigns the next value in the sequence
4058
+ * to a variable, which may or may not be local. May also be a
4059
+ * multiple assignment.
4060
+ */
4061
+ rb_define_method(rb_cFOR, "var", node_var, 0);
4062
+ rb_ary_push(members, rb_str_new2("var"));
4293
4063
  }
4294
4064
 
4295
4065
  /* Document-class: Node::GASGN
@@ -4401,6 +4171,7 @@ void define_node_subclass_methods()
4401
4171
  *
4402
4172
  * A conditional block using elsif has another IF node as the else
4403
4173
  * expression.
4174
+ *
4404
4175
  */
4405
4176
  {
4406
4177
  VALUE rb_cIF = rb_define_class_under(rb_cNode, "IF", rb_cNode);
@@ -4410,6 +4181,12 @@ void define_node_subclass_methods()
4410
4181
  rb_iv_set(rb_cIF, "__type__", INT2NUM(NODE_IF));
4411
4182
  rb_define_singleton_method(rb_cIF, "members", node_s_members, 0);
4412
4183
 
4184
+ /* Document-method: cond
4185
+ * the condition to evaluate
4186
+ */
4187
+ rb_define_method(rb_cIF, "cond", node_cond, 0);
4188
+ rb_ary_push(members, rb_str_new2("cond"));
4189
+
4413
4190
  /* Document-method: body
4414
4191
  * the expression to evaluate if the expression is true, or false
4415
4192
  * if the expression is empty
@@ -4423,12 +4200,6 @@ void define_node_subclass_methods()
4423
4200
  */
4424
4201
  rb_define_method(rb_cIF, "else", node_else, 0);
4425
4202
  rb_ary_push(members, rb_str_new2("else"));
4426
-
4427
- /* Document-method: cond
4428
- * the condition to evaluate
4429
- */
4430
- rb_define_method(rb_cIF, "cond", node_cond, 0);
4431
- rb_ary_push(members, rb_str_new2("cond"));
4432
4203
  }
4433
4204
 
4434
4205
  /* Document-class: Node::IFUNC
@@ -4442,11 +4213,11 @@ void define_node_subclass_methods()
4442
4213
  rb_iv_set(rb_cIFUNC, "__type__", INT2NUM(NODE_IFUNC));
4443
4214
  rb_define_singleton_method(rb_cIFUNC, "members", node_s_members, 0);
4444
4215
 
4445
- /* Document-method: state
4446
- * always 0
4216
+ /* Document-method: cfnc
4217
+ * a pointer to the C function to which to yield
4447
4218
  */
4448
- rb_define_method(rb_cIFUNC, "state", node_state, 0);
4449
- rb_ary_push(members, rb_str_new2("state"));
4219
+ rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
4220
+ rb_ary_push(members, rb_str_new2("cfnc"));
4450
4221
 
4451
4222
  /* Document-method: tval
4452
4223
  * the user-specified data to be passed as the second argument to
@@ -4455,11 +4226,11 @@ void define_node_subclass_methods()
4455
4226
  rb_define_method(rb_cIFUNC, "tval", node_tval, 0);
4456
4227
  rb_ary_push(members, rb_str_new2("tval"));
4457
4228
 
4458
- /* Document-method: cfnc
4459
- * a pointer to the C function to which to yield
4229
+ /* Document-method: state
4230
+ * always 0
4460
4231
  */
4461
- rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
4462
- rb_ary_push(members, rb_str_new2("cfnc"));
4232
+ rb_define_method(rb_cIFUNC, "state", node_state, 0);
4233
+ rb_ary_push(members, rb_str_new2("state"));
4463
4234
  }
4464
4235
 
4465
4236
  /* Document-class: Node::ITER
@@ -4483,14 +4254,6 @@ void define_node_subclass_methods()
4483
4254
  rb_iv_set(rb_cITER, "__type__", INT2NUM(NODE_ITER));
4484
4255
  rb_define_singleton_method(rb_cITER, "members", node_s_members, 0);
4485
4256
 
4486
- /* Document-method: var
4487
- * an assignment node which assigns the next value in the sequence
4488
- * to a variable, which may or may not be local. May also be a
4489
- * multiple assignment.
4490
- */
4491
- rb_define_method(rb_cITER, "var", node_var, 0);
4492
- rb_ary_push(members, rb_str_new2("var"));
4493
-
4494
4257
  /* Document-method: body
4495
4258
  * the body of the loop
4496
4259
  */
@@ -4503,6 +4266,14 @@ void define_node_subclass_methods()
4503
4266
  */
4504
4267
  rb_define_method(rb_cITER, "iter", node_iter, 0);
4505
4268
  rb_ary_push(members, rb_str_new2("iter"));
4269
+
4270
+ /* Document-method: var
4271
+ * an assignment node which assigns the next value in the sequence
4272
+ * to a variable, which may or may not be local. May also be a
4273
+ * multiple assignment.
4274
+ */
4275
+ rb_define_method(rb_cITER, "var", node_var, 0);
4276
+ rb_ary_push(members, rb_str_new2("var"));
4506
4277
  }
4507
4278
 
4508
4279
  /* Document-class: Node::IVAR
@@ -4542,14 +4313,14 @@ void define_node_subclass_methods()
4542
4313
  */
4543
4314
  rb_define_method(rb_cLASGN, "value", node_value, 0);
4544
4315
  rb_ary_push(members, rb_str_new2("value"));
4545
- rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4546
- rb_ary_push(members, rb_str_new2("cnt"));
4547
4316
 
4548
4317
  /* Document-method: vid
4549
4318
  * the name of the local variable
4550
4319
  */
4551
4320
  rb_define_method(rb_cLASGN, "vid", node_vid, 0);
4552
4321
  rb_ary_push(members, rb_str_new2("vid"));
4322
+ rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4323
+ rb_ary_push(members, rb_str_new2("cnt"));
4553
4324
  }
4554
4325
 
4555
4326
  /* Document-class: Node::LIT
@@ -4581,14 +4352,14 @@ void define_node_subclass_methods()
4581
4352
  rb_iv_set(rb_cLVAR, "__member__", members);
4582
4353
  rb_iv_set(rb_cLVAR, "__type__", INT2NUM(NODE_LVAR));
4583
4354
  rb_define_singleton_method(rb_cLVAR, "members", node_s_members, 0);
4584
- rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4585
- rb_ary_push(members, rb_str_new2("cnt"));
4586
4355
 
4587
4356
  /* Document-method: vid
4588
4357
  * the name of the local variable to retrieve.
4589
4358
  */
4590
4359
  rb_define_method(rb_cLVAR, "vid", node_vid, 0);
4591
4360
  rb_ary_push(members, rb_str_new2("vid"));
4361
+ rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4362
+ rb_ary_push(members, rb_str_new2("cnt"));
4592
4363
  }
4593
4364
 
4594
4365
  /* Document-class: Node::MASGN
@@ -4602,11 +4373,11 @@ void define_node_subclass_methods()
4602
4373
  rb_iv_set(rb_cMASGN, "__type__", INT2NUM(NODE_MASGN));
4603
4374
  rb_define_singleton_method(rb_cMASGN, "members", node_s_members, 0);
4604
4375
 
4605
- /* Document-method: value
4376
+ /* Document-method: args
4606
4377
  * TODO
4607
4378
  */
4608
- rb_define_method(rb_cMASGN, "value", node_value, 0);
4609
- rb_ary_push(members, rb_str_new2("value"));
4379
+ rb_define_method(rb_cMASGN, "args", node_args, 0);
4380
+ rb_ary_push(members, rb_str_new2("args"));
4610
4381
 
4611
4382
  /* Document-method: head
4612
4383
  * TODO
@@ -4614,11 +4385,11 @@ void define_node_subclass_methods()
4614
4385
  rb_define_method(rb_cMASGN, "head", node_head, 0);
4615
4386
  rb_ary_push(members, rb_str_new2("head"));
4616
4387
 
4617
- /* Document-method: args
4388
+ /* Document-method: value
4618
4389
  * TODO
4619
4390
  */
4620
- rb_define_method(rb_cMASGN, "args", node_args, 0);
4621
- rb_ary_push(members, rb_str_new2("args"));
4391
+ rb_define_method(rb_cMASGN, "value", node_value, 0);
4392
+ rb_ary_push(members, rb_str_new2("value"));
4622
4393
  }
4623
4394
 
4624
4395
  /* Document-class: Node::MATCH
@@ -4643,17 +4414,17 @@ void define_node_subclass_methods()
4643
4414
  rb_iv_set(rb_cMATCH, "__type__", INT2NUM(NODE_MATCH));
4644
4415
  rb_define_singleton_method(rb_cMATCH, "members", node_s_members, 0);
4645
4416
 
4646
- /* Document-method: value
4647
- * the value to compare against
4648
- */
4649
- rb_define_method(rb_cMATCH, "value", node_value, 0);
4650
- rb_ary_push(members, rb_str_new2("value"));
4651
-
4652
4417
  /* Document-method: lit
4653
4418
  * the regular expression to use in the condition.
4654
4419
  */
4655
4420
  rb_define_method(rb_cMATCH, "lit", node_lit, 0);
4656
4421
  rb_ary_push(members, rb_str_new2("lit"));
4422
+
4423
+ /* Document-method: value
4424
+ * the value to compare against
4425
+ */
4426
+ rb_define_method(rb_cMATCH, "value", node_value, 0);
4427
+ rb_ary_push(members, rb_str_new2("value"));
4657
4428
  }
4658
4429
 
4659
4430
  /* Document-class: Node::MATCH2
@@ -4681,6 +4452,13 @@ void define_node_subclass_methods()
4681
4452
  rb_iv_set(rb_cMATCH2, "__type__", INT2NUM(NODE_MATCH2));
4682
4453
  rb_define_singleton_method(rb_cMATCH2, "members", node_s_members, 0);
4683
4454
 
4455
+ /* Document-method: recv
4456
+ * the regular expression on the left hand side of the match
4457
+ * operator
4458
+ */
4459
+ rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4460
+ rb_ary_push(members, rb_str_new2("recv"));
4461
+
4684
4462
  /* Document-method: value
4685
4463
  * the expression on the right hand side of the match operator, or
4686
4464
  * an expression returning $_ if there is nothing on the right hand
@@ -4688,13 +4466,6 @@ void define_node_subclass_methods()
4688
4466
  */
4689
4467
  rb_define_method(rb_cMATCH2, "value", node_value, 0);
4690
4468
  rb_ary_push(members, rb_str_new2("value"));
4691
-
4692
- /* Document-method: recv
4693
- * the regular expression on the left hand side of the match
4694
- * operator
4695
- */
4696
- rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4697
- rb_ary_push(members, rb_str_new2("recv"));
4698
4469
  }
4699
4470
 
4700
4471
  /* Document-class: Node::MATCH3
@@ -4712,17 +4483,17 @@ void define_node_subclass_methods()
4712
4483
  rb_iv_set(rb_cMATCH3, "__type__", INT2NUM(NODE_MATCH3));
4713
4484
  rb_define_singleton_method(rb_cMATCH3, "members", node_s_members, 0);
4714
4485
 
4715
- /* Document-method: value
4716
- * the right hand side of the match
4717
- */
4718
- rb_define_method(rb_cMATCH3, "value", node_value, 0);
4719
- rb_ary_push(members, rb_str_new2("value"));
4720
-
4721
4486
  /* Document-method: recv
4722
4487
  * the left hand side of the match
4723
4488
  */
4724
4489
  rb_define_method(rb_cMATCH3, "recv", node_recv, 0);
4725
4490
  rb_ary_push(members, rb_str_new2("recv"));
4491
+
4492
+ /* Document-method: value
4493
+ * the right hand side of the match
4494
+ */
4495
+ rb_define_method(rb_cMATCH3, "value", node_value, 0);
4496
+ rb_ary_push(members, rb_str_new2("value"));
4726
4497
  }
4727
4498
 
4728
4499
  /* Document-class: Node::MEMO
@@ -4748,30 +4519,6 @@ void define_node_subclass_methods()
4748
4519
  rb_define_singleton_method(rb_cMEMO, "members", node_s_members, 0);
4749
4520
  }
4750
4521
 
4751
- /* Document-class: Node::METHOD
4752
- * A placeholder for a method entry in a class's method table.
4753
- */
4754
- {
4755
- VALUE rb_cMETHOD = rb_define_class_under(rb_cNode, "METHOD", rb_cNode);
4756
- members = rb_ary_new();
4757
- rb_cNodeSubclass[NODE_METHOD] = rb_cMETHOD;
4758
- rb_iv_set(rb_cMETHOD, "__member__", members);
4759
- rb_iv_set(rb_cMETHOD, "__type__", INT2NUM(NODE_METHOD));
4760
- rb_define_singleton_method(rb_cMETHOD, "members", node_s_members, 0);
4761
-
4762
- /* Document-method: noex
4763
- * the method's flags
4764
- */
4765
- rb_define_method(rb_cMETHOD, "noex", node_noex, 0);
4766
- rb_ary_push(members, rb_str_new2("noex"));
4767
-
4768
- /* Document-method: body
4769
- * the body of the method
4770
- */
4771
- rb_define_method(rb_cMETHOD, "body", node_body, 0);
4772
- rb_ary_push(members, rb_str_new2("body"));
4773
- }
4774
-
4775
4522
  /* Document-class: Node::MODULE
4776
4523
  * Represents a module definition, e.g.:
4777
4524
  * module cpath
@@ -4804,25 +4551,6 @@ void define_node_subclass_methods()
4804
4551
  rb_ary_push(members, rb_str_new2("body"));
4805
4552
  }
4806
4553
 
4807
- /* Document-class: Node::NEWLINE
4808
- * Represents the termination of a line. This is used for calling
4809
- * event hooks when a new line of code is reached.
4810
- */
4811
- {
4812
- VALUE rb_cNEWLINE = rb_define_class_under(rb_cNode, "NEWLINE", rb_cNode);
4813
- members = rb_ary_new();
4814
- rb_cNodeSubclass[NODE_NEWLINE] = rb_cNEWLINE;
4815
- rb_iv_set(rb_cNEWLINE, "__member__", members);
4816
- rb_iv_set(rb_cNEWLINE, "__type__", INT2NUM(NODE_NEWLINE));
4817
- rb_define_singleton_method(rb_cNEWLINE, "members", node_s_members, 0);
4818
-
4819
- /* Document-method: next
4820
- * the expression on the next line
4821
- */
4822
- rb_define_method(rb_cNEWLINE, "next", node_next, 0);
4823
- rb_ary_push(members, rb_str_new2("next"));
4824
- }
4825
-
4826
4554
  /* Document-class: Node::NEXT
4827
4555
  * Represents the 'next' keyword.
4828
4556
  * Causes control to be transferred to the end of the loop, causing the
@@ -4851,24 +4579,6 @@ void define_node_subclass_methods()
4851
4579
  rb_define_singleton_method(rb_cNIL, "members", node_s_members, 0);
4852
4580
  }
4853
4581
 
4854
- /* Document-class: Node::NOT
4855
- * Represents a logical negation.
4856
- */
4857
- {
4858
- VALUE rb_cNOT = rb_define_class_under(rb_cNode, "NOT", rb_cNode);
4859
- members = rb_ary_new();
4860
- rb_cNodeSubclass[NODE_NOT] = rb_cNOT;
4861
- rb_iv_set(rb_cNOT, "__member__", members);
4862
- rb_iv_set(rb_cNOT, "__type__", INT2NUM(NODE_NOT));
4863
- rb_define_singleton_method(rb_cNOT, "members", node_s_members, 0);
4864
-
4865
- /* Document-method: body
4866
- * the value to negate.
4867
- */
4868
- rb_define_method(rb_cNOT, "body", node_body, 0);
4869
- rb_ary_push(members, rb_str_new2("body"));
4870
- }
4871
-
4872
4582
  /* Document-class: Node::NTH_REF
4873
4583
  * Represents the nth match data item, e.g. $1, $2, etc.
4874
4584
  */
@@ -4943,6 +4653,12 @@ void define_node_subclass_methods()
4943
4653
  rb_iv_set(rb_cOP_ASGN1, "__type__", INT2NUM(NODE_OP_ASGN1));
4944
4654
  rb_define_singleton_method(rb_cOP_ASGN1, "members", node_s_members, 0);
4945
4655
 
4656
+ /* Document-method: args
4657
+ * the arguments to the assigment
4658
+ */
4659
+ rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4660
+ rb_ary_push(members, rb_str_new2("args"));
4661
+
4946
4662
  /* Document-method: mid
4947
4663
  * 0, 1, or the name a method to call to calculate the value of the
4948
4664
  * rhs
@@ -4955,12 +4671,6 @@ void define_node_subclass_methods()
4955
4671
  */
4956
4672
  rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
4957
4673
  rb_ary_push(members, rb_str_new2("recv"));
4958
-
4959
- /* Document-method: args
4960
- * the arguments to the assigment
4961
- */
4962
- rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4963
- rb_ary_push(members, rb_str_new2("args"));
4964
4674
  }
4965
4675
 
4966
4676
  /* Document-class: Node::OP_ASGN2
@@ -4983,11 +4693,11 @@ void define_node_subclass_methods()
4983
4693
  rb_iv_set(rb_cOP_ASGN2, "__type__", INT2NUM(NODE_OP_ASGN2));
4984
4694
  rb_define_singleton_method(rb_cOP_ASGN2, "members", node_s_members, 0);
4985
4695
 
4986
- /* Document-method: value
4987
- * the value to assign to the attribute
4696
+ /* Document-method: recv
4697
+ * the receiver of the attribute
4988
4698
  */
4989
- rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
4990
- rb_ary_push(members, rb_str_new2("value"));
4699
+ rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4700
+ rb_ary_push(members, rb_str_new2("recv"));
4991
4701
 
4992
4702
  /* Document-method: next
4993
4703
  * another node of type OP_ASGN2 which contains more information
@@ -4996,11 +4706,11 @@ void define_node_subclass_methods()
4996
4706
  rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
4997
4707
  rb_ary_push(members, rb_str_new2("next"));
4998
4708
 
4999
- /* Document-method: recv
5000
- * the receiver of the attribute
4709
+ /* Document-method: value
4710
+ * the value to assign to the attribute
5001
4711
  */
5002
- rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
5003
- rb_ary_push(members, rb_str_new2("recv"));
4712
+ rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
4713
+ rb_ary_push(members, rb_str_new2("value"));
5004
4714
  }
5005
4715
 
5006
4716
  /* Document-class: Node::OP_ASGN2_ARG
@@ -5016,6 +4726,12 @@ void define_node_subclass_methods()
5016
4726
  rb_iv_set(rb_cOP_ASGN2_ARG, "__type__", INT2NUM(NODE_OP_ASGN2_ARG));
5017
4727
  rb_define_singleton_method(rb_cOP_ASGN2_ARG, "members", node_s_members, 0);
5018
4728
 
4729
+ /* Document-method: vid
4730
+ * The method to call on the receiver to retrieve the attribute
4731
+ */
4732
+ rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
4733
+ rb_ary_push(members, rb_str_new2("vid"));
4734
+
5019
4735
  /* Document-method: aid
5020
4736
  * The method to call on the receiver to set the attribute
5021
4737
  */
@@ -5029,12 +4745,6 @@ void define_node_subclass_methods()
5029
4745
  */
5030
4746
  rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
5031
4747
  rb_ary_push(members, rb_str_new2("mid"));
5032
-
5033
- /* Document-method: vid
5034
- * The method to call on the receiver to retrieve the attribute
5035
- */
5036
- rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
5037
- rb_ary_push(members, rb_str_new2("vid"));
5038
4748
  }
5039
4749
 
5040
4750
  /* Document-class: Node::OP_ASGN_AND
@@ -5053,18 +4763,18 @@ void define_node_subclass_methods()
5053
4763
  rb_iv_set(rb_cOP_ASGN_AND, "__type__", INT2NUM(NODE_OP_ASGN_AND));
5054
4764
  rb_define_singleton_method(rb_cOP_ASGN_AND, "members", node_s_members, 0);
5055
4765
 
4766
+ /* Document-method: recv
4767
+ * an expression representing the left hand side of the assignment
4768
+ */
4769
+ rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
4770
+ rb_ary_push(members, rb_str_new2("recv"));
4771
+
5056
4772
  /* Document-method: value
5057
4773
  * an expression representing the assignment that should be
5058
4774
  * performed if the left hand side is true
5059
4775
  */
5060
4776
  rb_define_method(rb_cOP_ASGN_AND, "value", node_value, 0);
5061
4777
  rb_ary_push(members, rb_str_new2("value"));
5062
-
5063
- /* Document-method: recv
5064
- * an expression representing the left hand side of the assignment
5065
- */
5066
- rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
5067
- rb_ary_push(members, rb_str_new2("recv"));
5068
4778
  }
5069
4779
 
5070
4780
  /* Document-class: Node::OP_ASGN_OR
@@ -5237,18 +4947,18 @@ void define_node_subclass_methods()
5237
4947
  rb_iv_set(rb_cRESCUE, "__type__", INT2NUM(NODE_RESCUE));
5238
4948
  rb_define_singleton_method(rb_cRESCUE, "members", node_s_members, 0);
5239
4949
 
5240
- /* Document-method: resq
5241
- * the expression to be evaluated if an exception is raised
5242
- */
5243
- rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
5244
- rb_ary_push(members, rb_str_new2("resq"));
5245
-
5246
4950
  /* Document-method: head
5247
4951
  * the body of the block to evaluate
5248
4952
  */
5249
4953
  rb_define_method(rb_cRESCUE, "head", node_head, 0);
5250
4954
  rb_ary_push(members, rb_str_new2("head"));
5251
4955
 
4956
+ /* Document-method: resq
4957
+ * the expression to be evaluated if an exception is raised
4958
+ */
4959
+ rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
4960
+ rb_ary_push(members, rb_str_new2("resq"));
4961
+
5252
4962
  /* Document-method: else
5253
4963
  * the expression to be evaluated if no exception is raised
5254
4964
  */
@@ -5350,18 +5060,18 @@ void define_node_subclass_methods()
5350
5060
  rb_define_method(rb_cSCOPE, "tbl", node_tbl, 0);
5351
5061
  rb_ary_push(members, rb_str_new2("tbl"));
5352
5062
 
5353
- /* Document-method: next
5354
- * the body of the lexical scope
5355
- */
5356
- rb_define_method(rb_cSCOPE, "next", node_next, 0);
5357
- rb_ary_push(members, rb_str_new2("next"));
5358
-
5359
5063
  /* Document-method: rval
5360
5064
  * holds information about which class(es) to search for constants
5361
5065
  * in this scope
5362
5066
  */
5363
5067
  rb_define_method(rb_cSCOPE, "rval", node_rval, 0);
5364
5068
  rb_ary_push(members, rb_str_new2("rval"));
5069
+
5070
+ /* Document-method: next
5071
+ * the body of the lexical scope
5072
+ */
5073
+ rb_define_method(rb_cSCOPE, "next", node_next, 0);
5074
+ rb_ary_push(members, rb_str_new2("next"));
5365
5075
  }
5366
5076
 
5367
5077
  /* Document-class: Node::SELF
@@ -5436,31 +5146,6 @@ void define_node_subclass_methods()
5436
5146
  rb_ary_push(members, rb_str_new2("args"));
5437
5147
  }
5438
5148
 
5439
- /* Document-class: Node::SVALUE
5440
- * Represents the collection of multiple values of the right hand side
5441
- * of an assignment into a single value, for use in single assignment,
5442
- * e.g.:
5443
- * lhs = a, b, c
5444
- * The argument to this node is an Array.
5445
- * If it is length 0, returns nil.
5446
- * If it is length 1, returns the first element in the array.
5447
- * Otherwise, returns the array.
5448
- */
5449
- {
5450
- VALUE rb_cSVALUE = rb_define_class_under(rb_cNode, "SVALUE", rb_cNode);
5451
- members = rb_ary_new();
5452
- rb_cNodeSubclass[NODE_SVALUE] = rb_cSVALUE;
5453
- rb_iv_set(rb_cSVALUE, "__member__", members);
5454
- rb_iv_set(rb_cSVALUE, "__type__", INT2NUM(NODE_SVALUE));
5455
- rb_define_singleton_method(rb_cSVALUE, "members", node_s_members, 0);
5456
-
5457
- /* Document-method: head
5458
- * an expression which returns an Array.
5459
- */
5460
- rb_define_method(rb_cSVALUE, "head", node_head, 0);
5461
- rb_ary_push(members, rb_str_new2("head"));
5462
- }
5463
-
5464
5149
  /* Document-class: Node::TO_ARY
5465
5150
  * Represents a conversion from one object type to an array type.
5466
5151
  * Evaluation of this node converts its argument to an array by calling
@@ -5528,8 +5213,6 @@ void define_node_subclass_methods()
5528
5213
  rb_iv_set(rb_cUNTIL, "__member__", members);
5529
5214
  rb_iv_set(rb_cUNTIL, "__type__", INT2NUM(NODE_UNTIL));
5530
5215
  rb_define_singleton_method(rb_cUNTIL, "members", node_s_members, 0);
5531
- rb_define_method(rb_cUNTIL, "state", node_state, 0);
5532
- rb_ary_push(members, rb_str_new2("state"));
5533
5216
 
5534
5217
  /* Document-method: body
5535
5218
  * the body of the loop
@@ -5542,6 +5225,8 @@ void define_node_subclass_methods()
5542
5225
  */
5543
5226
  rb_define_method(rb_cUNTIL, "cond", node_cond, 0);
5544
5227
  rb_ary_push(members, rb_str_new2("cond"));
5228
+ rb_define_method(rb_cUNTIL, "state", node_state, 0);
5229
+ rb_ary_push(members, rb_str_new2("state"));
5545
5230
  }
5546
5231
 
5547
5232
  /* Document-class: Node::VALIAS
@@ -5557,10 +5242,10 @@ void define_node_subclass_methods()
5557
5242
  rb_iv_set(rb_cVALIAS, "__member__", members);
5558
5243
  rb_iv_set(rb_cVALIAS, "__type__", INT2NUM(NODE_VALIAS));
5559
5244
  rb_define_singleton_method(rb_cVALIAS, "members", node_s_members, 0);
5560
- rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5561
- rb_ary_push(members, rb_str_new2("second"));
5562
5245
  rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5563
5246
  rb_ary_push(members, rb_str_new2("first"));
5247
+ rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5248
+ rb_ary_push(members, rb_str_new2("second"));
5564
5249
  }
5565
5250
 
5566
5251
  /* Document-class: Node::VCALL
@@ -5620,12 +5305,6 @@ void define_node_subclass_methods()
5620
5305
  rb_iv_set(rb_cWHEN, "__type__", INT2NUM(NODE_WHEN));
5621
5306
  rb_define_singleton_method(rb_cWHEN, "members", node_s_members, 0);
5622
5307
 
5623
- /* Document-method: next
5624
- * the next expression to be evaluated if the condition is false
5625
- */
5626
- rb_define_method(rb_cWHEN, "next", node_next, 0);
5627
- rb_ary_push(members, rb_str_new2("next"));
5628
-
5629
5308
  /* Document-method: head
5630
5309
  * a value to compare against, or a condition to be tested
5631
5310
  */
@@ -5637,6 +5316,12 @@ void define_node_subclass_methods()
5637
5316
  */
5638
5317
  rb_define_method(rb_cWHEN, "body", node_body, 0);
5639
5318
  rb_ary_push(members, rb_str_new2("body"));
5319
+
5320
+ /* Document-method: next
5321
+ * the next expression to be evaluated if the condition is false
5322
+ */
5323
+ rb_define_method(rb_cWHEN, "next", node_next, 0);
5324
+ rb_ary_push(members, rb_str_new2("next"));
5640
5325
  }
5641
5326
 
5642
5327
  /* Document-class: Node::WHILE
@@ -5652,8 +5337,6 @@ void define_node_subclass_methods()
5652
5337
  rb_iv_set(rb_cWHILE, "__member__", members);
5653
5338
  rb_iv_set(rb_cWHILE, "__type__", INT2NUM(NODE_WHILE));
5654
5339
  rb_define_singleton_method(rb_cWHILE, "members", node_s_members, 0);
5655
- rb_define_method(rb_cWHILE, "state", node_state, 0);
5656
- rb_ary_push(members, rb_str_new2("state"));
5657
5340
 
5658
5341
  /* Document-method: body
5659
5342
  * the body of the loop
@@ -5666,6 +5349,8 @@ void define_node_subclass_methods()
5666
5349
  */
5667
5350
  rb_define_method(rb_cWHILE, "cond", node_cond, 0);
5668
5351
  rb_ary_push(members, rb_str_new2("cond"));
5352
+ rb_define_method(rb_cWHILE, "state", node_state, 0);
5353
+ rb_ary_push(members, rb_str_new2("state"));
5669
5354
  }
5670
5355
 
5671
5356
  /* Document-class: Node::XSTR
@@ -5702,17 +5387,17 @@ void define_node_subclass_methods()
5702
5387
  rb_iv_set(rb_cYIELD, "__type__", INT2NUM(NODE_YIELD));
5703
5388
  rb_define_singleton_method(rb_cYIELD, "members", node_s_members, 0);
5704
5389
 
5705
- /* Document-method: state
5706
- * if nonzero, splats the value before yielding
5707
- */
5708
- rb_define_method(rb_cYIELD, "state", node_state, 0);
5709
- rb_ary_push(members, rb_str_new2("state"));
5710
-
5711
5390
  /* Document-method: head
5712
5391
  * the value to yield
5713
5392
  */
5714
5393
  rb_define_method(rb_cYIELD, "head", node_head, 0);
5715
5394
  rb_ary_push(members, rb_str_new2("head"));
5395
+
5396
+ /* Document-method: state
5397
+ * if nonzero, splats the value before yielding
5398
+ */
5399
+ rb_define_method(rb_cYIELD, "state", node_state, 0);
5400
+ rb_ary_push(members, rb_str_new2("state"));
5716
5401
  }
5717
5402
 
5718
5403
  /* Document-class: Node::ZARRAY