ruby-next-parser 2.8.0.6 → 3.0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -647,7 +647,7 @@ rule
647
647
 
648
648
  fitem: fname
649
649
  {
650
- result = @builder.symbol(val[0])
650
+ result = @builder.symbol_internal(val[0])
651
651
  }
652
652
  | symbol
653
653
 
@@ -866,6 +866,12 @@ rule
866
866
  }
867
867
  | defn_head f_paren_args tEQL arg
868
868
  {
869
+ _def_t, name_t = val[0]
870
+
871
+ if name_t[0].end_with?('=')
872
+ diagnostic :error, :endless_setter, nil, name_t
873
+ end
874
+
869
875
  result = @builder.def_endless_method(*val[0],
870
876
  val[1], val[2], val[3])
871
877
 
@@ -960,6 +966,14 @@ rule
960
966
  {
961
967
  result = val
962
968
  }
969
+ | tLPAREN2 args tCOMMA args_forward rparen
970
+ {
971
+ unless @static_env.declared_forward_args?
972
+ diagnostic :error, :unexpected_token, { :token => 'tBDOT3' } , val[3]
973
+ end
974
+
975
+ result = [val[0], [*val[1], @builder.forwarded_args(val[3])], val[4]]
976
+ }
963
977
  | tLPAREN2 args_forward rparen
964
978
  {
965
979
  unless @static_env.declared_forward_args?
@@ -1212,14 +1226,7 @@ rule
1212
1226
  result = @builder.block(val[0],
1213
1227
  begin_t, args, body, end_t)
1214
1228
  }
1215
- | tLAMBDA lambda
1216
- {
1217
- lambda_call = @builder.call_lambda(val[0])
1218
-
1219
- args, (begin_t, body, end_t) = val[1]
1220
- result = @builder.block(lambda_call,
1221
- begin_t, args, body, end_t)
1222
- }
1229
+ | lambda
1223
1230
  | kIF expr_value then compstmt if_tail kEND
1224
1231
  {
1225
1232
  else_t, else_ = val[4]
@@ -1314,6 +1321,7 @@ rule
1314
1321
  {
1315
1322
  @static_env.extend_static
1316
1323
  @lexer.cmdarg.push(false)
1324
+ @context.push(:module)
1317
1325
  }
1318
1326
  bodystmt kEND
1319
1327
  {
@@ -1326,6 +1334,7 @@ rule
1326
1334
 
1327
1335
  @lexer.cmdarg.pop
1328
1336
  @static_env.unextend
1337
+ @context.pop
1329
1338
  }
1330
1339
  | defn_head f_arglist bodystmt kEND
1331
1340
  {
@@ -1457,6 +1466,9 @@ rule
1457
1466
  result = @builder.restarg(val[0])
1458
1467
  }
1459
1468
 
1469
+ f_any_kwrest: f_kwrest
1470
+ | f_no_kwarg
1471
+
1460
1472
  block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
1461
1473
  {
1462
1474
  result = val[0].concat(val[2]).concat(val[3])
@@ -1465,11 +1477,7 @@ rule
1465
1477
  {
1466
1478
  result = val[0].concat(val[1])
1467
1479
  }
1468
- | f_kwrest opt_f_block_arg
1469
- {
1470
- result = val[0].concat(val[1])
1471
- }
1472
- | f_no_kwarg opt_f_block_arg
1480
+ | f_any_kwrest opt_f_block_arg
1473
1481
  {
1474
1482
  result = val[0].concat(val[1])
1475
1483
  }
@@ -1488,6 +1496,8 @@ opt_block_args_tail:
1488
1496
  result = []
1489
1497
  }
1490
1498
 
1499
+ excessed_comma: tCOMMA
1500
+
1491
1501
  block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
1492
1502
  {
1493
1503
  result = val[0].
@@ -1522,7 +1532,7 @@ opt_block_args_tail:
1522
1532
  concat(val[2]).
1523
1533
  concat(val[3])
1524
1534
  }
1525
- | f_arg tCOMMA
1535
+ | f_arg excessed_comma
1526
1536
  | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail
1527
1537
  {
1528
1538
  result = val[0].
@@ -1622,7 +1632,8 @@ opt_block_args_tail:
1622
1632
  }
1623
1633
  | f_bad_arg
1624
1634
 
1625
- lambda: {
1635
+ lambda: tLAMBDA
1636
+ {
1626
1637
  @static_env.extend_dynamic
1627
1638
  @max_numparam_stack.push
1628
1639
  @context.push(:lambda)
@@ -1634,12 +1645,16 @@ opt_block_args_tail:
1634
1645
  }
1635
1646
  lambda_body
1636
1647
  {
1637
- args = @max_numparam_stack.has_numparams? ? @builder.numargs(@max_numparam_stack.top) : val[1]
1638
- result = [ args, val[3] ]
1648
+ lambda_call = @builder.call_lambda(val[0])
1649
+ args = @max_numparam_stack.has_numparams? ? @builder.numargs(@max_numparam_stack.top) : val[2]
1650
+ begin_t, body, end_t = val[4]
1639
1651
 
1640
1652
  @max_numparam_stack.pop
1641
1653
  @static_env.unextend
1642
1654
  @lexer.cmdarg.pop
1655
+
1656
+ result = @builder.block(lambda_call,
1657
+ begin_t, args, body, end_t)
1643
1658
  }
1644
1659
 
1645
1660
  f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN
@@ -1878,6 +1893,10 @@ opt_block_args_tail:
1878
1893
  {
1879
1894
  result = @builder.array_pattern(nil, [val[0]].concat(val[2]), nil)
1880
1895
  }
1896
+ | p_find
1897
+ {
1898
+ result = @builder.find_pattern(nil, val[0], nil)
1899
+ }
1881
1900
  | p_args_tail
1882
1901
  {
1883
1902
  result = @builder.array_pattern(nil, val[0], nil)
@@ -1920,6 +1939,12 @@ opt_block_args_tail:
1920
1939
  pattern = @builder.array_pattern(nil, val[2], nil)
1921
1940
  result = @builder.const_pattern(val[0], val[1], pattern, val[3])
1922
1941
  }
1942
+ | p_const p_lparen p_find rparen
1943
+ {
1944
+ @pattern_hash_keys.pop
1945
+ pattern = @builder.find_pattern(nil, val[2], nil)
1946
+ result = @builder.const_pattern(val[0], val[1], pattern, val[3])
1947
+ }
1923
1948
  | p_const p_lparen p_kwargs rparen
1924
1949
  {
1925
1950
  @pattern_hash_keys.pop
@@ -1937,6 +1962,12 @@ opt_block_args_tail:
1937
1962
  pattern = @builder.array_pattern(nil, val[2], nil)
1938
1963
  result = @builder.const_pattern(val[0], val[1], pattern, val[3])
1939
1964
  }
1965
+ | p_const p_lbracket p_find rbracket
1966
+ {
1967
+ @pattern_hash_keys.pop
1968
+ pattern = @builder.find_pattern(nil, val[2], nil)
1969
+ result = @builder.const_pattern(val[0], val[1], pattern, val[3])
1970
+ }
1940
1971
  | p_const p_lbracket p_kwargs rbracket
1941
1972
  {
1942
1973
  @pattern_hash_keys.pop
@@ -1948,14 +1979,13 @@ opt_block_args_tail:
1948
1979
  pattern = @builder.array_pattern(val[1], nil, val[2])
1949
1980
  result = @builder.const_pattern(val[0], val[1], pattern, val[2])
1950
1981
  }
1951
- | tLBRACK
1982
+ | tLBRACK p_args rbracket
1952
1983
  {
1953
- @pattern_hash_keys.push
1984
+ result = @builder.array_pattern(val[0], val[1], val[2])
1954
1985
  }
1955
- p_args rbracket
1986
+ | tLBRACK p_find rbracket
1956
1987
  {
1957
- @pattern_hash_keys.pop
1958
- result = @builder.array_pattern(val[0], val[2], val[3])
1988
+ result = @builder.find_pattern(val[0], val[1], val[2])
1959
1989
  }
1960
1990
  | tLBRACK rbracket
1961
1991
  {
@@ -2036,25 +2066,27 @@ opt_block_args_tail:
2036
2066
  result = [ *val[0], last_item ]
2037
2067
  }
2038
2068
 
2039
- p_args_tail: tSTAR tIDENTIFIER
2069
+ p_args_tail: p_rest
2040
2070
  {
2041
- match_rest = @builder.match_rest(val[0], val[1])
2042
- result = [ match_rest ]
2071
+ result = [ val[0] ]
2043
2072
  }
2044
- | tSTAR tIDENTIFIER tCOMMA p_args_post
2073
+ | p_rest tCOMMA p_args_post
2045
2074
  {
2046
- match_rest = @builder.match_rest(val[0], val[1])
2047
- result = [ match_rest, *val[3] ]
2075
+ result = [ val[0], *val[2] ]
2048
2076
  }
2049
- | tSTAR
2077
+
2078
+ p_find: p_rest tCOMMA p_args_post tCOMMA p_rest
2050
2079
  {
2051
- match_rest = @builder.match_rest(val[0])
2052
- result = [ match_rest ]
2080
+ result = [ val[0], *val[2], val[4] ]
2053
2081
  }
2054
- | tSTAR tCOMMA p_args_post
2082
+
2083
+ p_rest: tSTAR tIDENTIFIER
2055
2084
  {
2056
- match_rest = @builder.match_rest(val[0])
2057
- result = [ match_rest, *val[2] ]
2085
+ result = @builder.match_rest(val[0], val[1])
2086
+ }
2087
+ | tSTAR
2088
+ {
2089
+ result = @builder.match_rest(val[0])
2058
2090
  }
2059
2091
 
2060
2092
  p_args_post: p_arg
@@ -2068,7 +2100,7 @@ opt_block_args_tail:
2068
2100
 
2069
2101
  p_arg: p_expr
2070
2102
 
2071
- p_kwargs: p_kwarg tCOMMA p_kwrest
2103
+ p_kwargs: p_kwarg tCOMMA p_any_kwrest
2072
2104
  {
2073
2105
  result = [ *val[0], *val[2] ]
2074
2106
  }
@@ -2080,18 +2112,10 @@ opt_block_args_tail:
2080
2112
  {
2081
2113
  result = val[0]
2082
2114
  }
2083
- | p_kwrest
2115
+ | p_any_kwrest
2084
2116
  {
2085
2117
  result = val[0]
2086
2118
  }
2087
- | p_kwarg tCOMMA p_kwnorest
2088
- {
2089
- result = [ *val[0], *val[2] ]
2090
- }
2091
- | p_kwnorest
2092
- {
2093
- result = [ *val[0], *val[2] ]
2094
- }
2095
2119
 
2096
2120
  p_kwarg: p_kw
2097
2121
  {
@@ -2113,7 +2137,6 @@ opt_block_args_tail:
2113
2137
 
2114
2138
  p_kw_label: tLABEL
2115
2139
  {
2116
- check_kwarg_name(val[0])
2117
2140
  result = [:label, val[0]]
2118
2141
  }
2119
2142
  | tSTRING_BEG string_contents tLABEL_END
@@ -2135,6 +2158,9 @@ opt_block_args_tail:
2135
2158
  result = [ @builder.match_nil_pattern(val[0], val[1]) ]
2136
2159
  }
2137
2160
 
2161
+ p_any_kwrest: p_kwrest
2162
+ | p_kwnorest
2163
+
2138
2164
  p_value: p_primitive
2139
2165
  | p_primitive tDOT2 p_primitive
2140
2166
  {
@@ -2176,14 +2202,7 @@ opt_block_args_tail:
2176
2202
  {
2177
2203
  result = @builder.accessible(val[0])
2178
2204
  }
2179
- | tLAMBDA lambda
2180
- {
2181
- lambda_call = @builder.call_lambda(val[0])
2182
-
2183
- args, (begin_t, body, end_t) = val[1]
2184
- result = @builder.block(lambda_call,
2185
- begin_t, args, body, end_t)
2186
- }
2205
+ | lambda
2187
2206
 
2188
2207
  p_variable: tIDENTIFIER
2189
2208
  {
@@ -2602,15 +2621,22 @@ keyword_variable: kNIL
2602
2621
  result = nil
2603
2622
  }
2604
2623
 
2605
- f_paren_args: tLPAREN2 f_args rparen
2624
+ f_paren_args: tLPAREN2 f_args rparen
2606
2625
  {
2607
2626
  result = @builder.args(val[0], val[1], val[2])
2608
2627
 
2609
2628
  @lexer.state = :expr_value
2610
2629
  }
2630
+ | tLPAREN2 f_arg tCOMMA args_forward rparen
2631
+ {
2632
+ args = [ *val[1], @builder.forward_arg(val[3]) ]
2633
+ result = @builder.args(val[0], args, val[4])
2634
+
2635
+ @static_env.declare_forward_args
2636
+ }
2611
2637
  | tLPAREN2 args_forward rparen
2612
2638
  {
2613
- result = @builder.forward_args(val[0], val[1], val[2])
2639
+ result = @builder.forward_only_args(val[0], val[1], val[2])
2614
2640
  @static_env.declare_forward_args
2615
2641
 
2616
2642
  @lexer.state = :expr_value
@@ -2635,11 +2661,7 @@ keyword_variable: kNIL
2635
2661
  {
2636
2662
  result = val[0].concat(val[1])
2637
2663
  }
2638
- | f_kwrest opt_f_block_arg
2639
- {
2640
- result = val[0].concat(val[1])
2641
- }
2642
- | f_no_kwarg opt_f_block_arg
2664
+ | f_any_kwrest opt_f_block_arg
2643
2665
  {
2644
2666
  result = val[0].concat(val[1])
2645
2667
  }
@@ -2944,7 +2966,24 @@ keyword_variable: kNIL
2944
2966
  {
2945
2967
  result = []
2946
2968
  }
2947
- | assocs trailer
2969
+ | assoc_items trailer
2970
+
2971
+ assoc_items : assoc_item
2972
+ {
2973
+ result = [ val[0] ]
2974
+ }
2975
+ | assoc_items tCOMMA assoc_item
2976
+ {
2977
+ result = val[0] << val[2]
2978
+ }
2979
+
2980
+ assoc_item: assoc
2981
+ |
2982
+ tIDENTIFIER
2983
+ {
2984
+ lvar = @builder.accessible(@builder.ident(val[0]))
2985
+ result = @builder.ipair(lvar)
2986
+ }
2948
2987
 
2949
2988
  assocs: assoc
2950
2989
  {
@@ -3025,7 +3064,7 @@ require 'parser/ruby-next/parser_ext'
3025
3064
  prepend Parser::NextExt
3026
3065
 
3027
3066
  def version
3028
- 28 # the master Ruby version
3067
+ 30
3029
3068
  end
3030
3069
 
3031
3070
  def default_encoding
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-next-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0.6
4
+ version: 3.0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Dementyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-02 00:00:00.000000000 Z
11
+ date: 2020-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -39,7 +39,6 @@ files:
39
39
  - lib/parser/ruby-next/lexer.rl
40
40
  - lib/parser/ruby-next/meta.rb
41
41
  - lib/parser/ruby-next/parser_ext.rb
42
- - lib/parser/ruby-next/source/map/endless_definition.rb
43
42
  - lib/parser/ruby-next/version.rb
44
43
  - lib/parser/rubynext.rb
45
44
  - lib/parser/rubynext.y
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Parser
4
- module Source
5
-
6
- class Map::EndlessDefinition < Map
7
- attr_reader :keyword
8
- attr_reader :operator
9
- attr_reader :name
10
- attr_reader :assignment
11
-
12
- def initialize(keyword_l, operator_l, name_l, assignment_l, body_l)
13
- @keyword = keyword_l
14
- @operator = operator_l
15
- @name = name_l
16
- @assignment = assignment_l
17
-
18
- super(@keyword.join(body_l))
19
- end
20
- end
21
-
22
- end
23
- end