ruby-next-parser 2.8.0.8 → 3.0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,7 +46,17 @@ preclow
46
46
 
47
47
  rule
48
48
 
49
- program: top_compstmt
49
+ program: {
50
+ @current_arg_stack.push(nil)
51
+ @max_numparam_stack.push
52
+ }
53
+ top_compstmt
54
+ {
55
+ result = val[1]
56
+
57
+ @current_arg_stack.pop
58
+ @max_numparam_stack.pop
59
+ }
50
60
 
51
61
  top_compstmt: top_stmts opt_terms
52
62
  {
@@ -206,25 +216,8 @@ rule
206
216
  {
207
217
  result = @builder.multi_assign(val[0], val[1], val[2])
208
218
  }
209
- | rassign
210
219
  | expr
211
220
 
212
- rassign: arg_value tASSOC lhs
213
- {
214
- result = @builder.rassign(val[0], val[1], val[2])
215
- }
216
- | arg_value tASSOC mlhs
217
- {
218
- result = @builder.multi_rassign(val[0], val[1], val[2])
219
- }
220
- | rassign tASSOC lhs
221
- {
222
- result = @builder.rassign(val[0], val[1], val[2])
223
- }
224
- | rassign tASSOC mlhs
225
- {
226
- result = @builder.multi_rassign(val[0], val[1], val[2])
227
- }
228
221
 
229
222
  command_asgn: lhs tEQL command_rhs
230
223
  {
@@ -301,19 +294,35 @@ rule
301
294
  {
302
295
  result = @builder.not_op(val[0], nil, val[1], nil)
303
296
  }
297
+ | arg tASSOC
298
+ {
299
+ @lexer.state = :expr_beg
300
+ @lexer.command_start = false
301
+ @pattern_variables.push
302
+
303
+ result = @lexer.in_kwarg
304
+ @lexer.in_kwarg = true
305
+ }
306
+ p_expr
307
+ {
308
+ @pattern_variables.pop
309
+ @lexer.in_kwarg = val[2]
310
+ result = @builder.match_pattern(val[0], val[1], val[3])
311
+ }
304
312
  | arg kIN
305
313
  {
306
314
  @lexer.state = :expr_beg
307
315
  @lexer.command_start = false
308
- pattern_variables.push
316
+ @pattern_variables.push
309
317
 
310
318
  result = @lexer.in_kwarg
311
319
  @lexer.in_kwarg = true
312
320
  }
313
321
  p_expr
314
322
  {
323
+ @pattern_variables.pop
315
324
  @lexer.in_kwarg = val[2]
316
- result = @builder.in_match(val[0], val[1], val[3])
325
+ result = @builder.match_pattern_p(val[0], val[1], val[3])
317
326
  }
318
327
  | arg =tLBRACE_ARG
319
328
 
@@ -328,7 +337,7 @@ rule
328
337
  result = [ val[1], val[2] ]
329
338
  }
330
339
 
331
- def_name: fname
340
+ def_name: fname
332
341
  {
333
342
  @static_env.extend_static
334
343
  @lexer.cmdarg.push(false)
@@ -864,8 +873,11 @@ rule
864
873
  result = @builder.ternary(val[0], val[1],
865
874
  val[2], val[4], val[5])
866
875
  }
867
- | defn_head f_paren_args tEQL arg
876
+ | defn_head f_opt_paren_args tEQL arg
868
877
  {
878
+ _def_t, name_t = val[0]
879
+ endless_method_name(name_t)
880
+
869
881
  result = @builder.def_endless_method(*val[0],
870
882
  val[1], val[2], val[3])
871
883
 
@@ -875,8 +887,11 @@ rule
875
887
  @context.pop
876
888
  @current_arg_stack.pop
877
889
  }
878
- | defn_head f_paren_args tEQL arg kRESCUE_MOD arg
890
+ | defn_head f_opt_paren_args tEQL arg kRESCUE_MOD arg
879
891
  {
892
+ _def_t, name_t = val[0]
893
+ endless_method_name(name_t)
894
+
880
895
  rescue_body = @builder.rescue_body(val[4],
881
896
  nil, nil, nil,
882
897
  nil, val[5])
@@ -892,8 +907,11 @@ rule
892
907
  @context.pop
893
908
  @current_arg_stack.pop
894
909
  }
895
- | defs_head f_paren_args tEQL arg
910
+ | defs_head f_opt_paren_args tEQL arg
896
911
  {
912
+ _def_t, _recv, _dot_t, name_t = val[0]
913
+ endless_method_name(name_t)
914
+
897
915
  result = @builder.def_endless_singleton(*val[0],
898
916
  val[1], val[2], val[3])
899
917
 
@@ -903,8 +921,11 @@ rule
903
921
  @context.pop
904
922
  @current_arg_stack.pop
905
923
  }
906
- | defs_head f_paren_args tEQL arg kRESCUE_MOD arg
924
+ | defs_head f_opt_paren_args tEQL arg kRESCUE_MOD arg
907
925
  {
926
+ _def_t, _recv, _dot_t, name_t = val[0]
927
+ endless_method_name(name_t)
928
+
908
929
  rescue_body = @builder.rescue_body(val[4],
909
930
  nil, nil, nil,
910
931
  nil, val[5])
@@ -1847,6 +1868,8 @@ opt_block_args_tail:
1847
1868
  }
1848
1869
  p_top_expr then
1849
1870
  {
1871
+ @pattern_variables.pop
1872
+ @pattern_hash_keys.pop
1850
1873
  @lexer.in_kwarg = val[1]
1851
1874
  }
1852
1875
  compstmt p_cases
@@ -2615,6 +2638,12 @@ keyword_variable: kNIL
2615
2638
  result = nil
2616
2639
  }
2617
2640
 
2641
+ f_opt_paren_args: f_paren_args
2642
+ | none
2643
+ {
2644
+ result = @builder.args(nil, [], nil)
2645
+ }
2646
+
2618
2647
  f_paren_args: tLPAREN2 f_args rparen
2619
2648
  {
2620
2649
  result = @builder.args(val[0], val[1], val[2])
@@ -2960,7 +2989,24 @@ keyword_variable: kNIL
2960
2989
  {
2961
2990
  result = []
2962
2991
  }
2963
- | assocs trailer
2992
+ | assoc_items trailer
2993
+
2994
+ assoc_items : assoc_item
2995
+ {
2996
+ result = [ val[0] ]
2997
+ }
2998
+ | assoc_items tCOMMA assoc_item
2999
+ {
3000
+ result = val[0] << val[2]
3001
+ }
3002
+
3003
+ assoc_item: assoc
3004
+ |
3005
+ tIDENTIFIER
3006
+ {
3007
+ lvar = @builder.accessible(@builder.ident(val[0]))
3008
+ result = @builder.ipair(lvar)
3009
+ }
2964
3010
 
2965
3011
  assocs: assoc
2966
3012
  {
@@ -2979,6 +3025,11 @@ keyword_variable: kNIL
2979
3025
  {
2980
3026
  result = @builder.pair_keyword(val[0], val[1])
2981
3027
  }
3028
+ | tLABEL
3029
+ {
3030
+ lvar = @builder.accessible(@builder.ident(val[0]))
3031
+ result = @builder.ipair_keyword(lvar)
3032
+ }
2982
3033
  | tSTRING_BEG string_contents tLABEL_END arg_value
2983
3034
  {
2984
3035
  result = @builder.pair_quoted(val[0], val[1], val[2], val[3])
@@ -3041,9 +3092,15 @@ require 'parser/ruby-next/parser_ext'
3041
3092
  prepend Parser::NextExt
3042
3093
 
3043
3094
  def version
3044
- 28
3095
+ 30
3045
3096
  end
3046
3097
 
3047
3098
  def default_encoding
3048
3099
  Encoding::UTF_8
3049
3100
  end
3101
+
3102
+ def endless_method_name(name_t)
3103
+ if name_t[0].end_with?('=')
3104
+ diagnostic :error, :endless_setter, nil, name_t
3105
+ end
3106
+ end
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.8
4
+ version: 3.0.0.3
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-07-29 00:00:00.000000000 Z
11
+ date: 2020-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.7.1.4
19
+ version: 2.7.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.7.1.4
26
+ version: 2.7.2.0
27
27
  description: "\n Parser extension to support edge and experimental Ruby syntax\n
28
28
  \ "
29
29
  email: