ruby-next-parser 3.0.0.3 → 3.0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parser/ruby-next/version.rb +1 -1
- data/lib/parser/rubynext.rb +3799 -3643
- data/lib/parser/rubynext.y +77 -4
- metadata +8 -8
data/lib/parser/rubynext.y
CHANGED
@@ -261,6 +261,74 @@ rule
|
|
261
261
|
val[0], val[1], val[2]),
|
262
262
|
val[3], val[4])
|
263
263
|
}
|
264
|
+
| defn_head f_opt_paren_args tEQL command
|
265
|
+
{
|
266
|
+
_def_t, name_t = val[0]
|
267
|
+
endless_method_name(name_t)
|
268
|
+
|
269
|
+
result = @builder.def_endless_method(*val[0],
|
270
|
+
val[1], val[2], val[3])
|
271
|
+
|
272
|
+
@lexer.cmdarg.pop
|
273
|
+
@lexer.cond.pop
|
274
|
+
@static_env.unextend
|
275
|
+
@context.pop
|
276
|
+
@current_arg_stack.pop
|
277
|
+
}
|
278
|
+
| defn_head f_opt_paren_args tEQL command kRESCUE_MOD arg
|
279
|
+
{
|
280
|
+
_def_t, name_t = val[0]
|
281
|
+
endless_method_name(name_t)
|
282
|
+
|
283
|
+
rescue_body = @builder.rescue_body(val[4],
|
284
|
+
nil, nil, nil,
|
285
|
+
nil, val[5])
|
286
|
+
|
287
|
+
method_body = @builder.begin_body(val[3], [ rescue_body ])
|
288
|
+
|
289
|
+
result = @builder.def_endless_method(*val[0],
|
290
|
+
val[1], val[2], method_body)
|
291
|
+
|
292
|
+
@lexer.cmdarg.pop
|
293
|
+
@lexer.cond.pop
|
294
|
+
@static_env.unextend
|
295
|
+
@context.pop
|
296
|
+
@current_arg_stack.pop
|
297
|
+
}
|
298
|
+
| defs_head f_opt_paren_args tEQL command
|
299
|
+
{
|
300
|
+
_def_t, _recv, _dot_t, name_t = val[0]
|
301
|
+
endless_method_name(name_t)
|
302
|
+
|
303
|
+
result = @builder.def_endless_singleton(*val[0],
|
304
|
+
val[1], val[2], val[3])
|
305
|
+
|
306
|
+
@lexer.cmdarg.pop
|
307
|
+
@lexer.cond.pop
|
308
|
+
@static_env.unextend
|
309
|
+
@context.pop
|
310
|
+
@current_arg_stack.pop
|
311
|
+
}
|
312
|
+
| defs_head f_opt_paren_args tEQL command kRESCUE_MOD arg
|
313
|
+
{
|
314
|
+
_def_t, _recv, _dot_t, name_t = val[0]
|
315
|
+
endless_method_name(name_t)
|
316
|
+
|
317
|
+
rescue_body = @builder.rescue_body(val[4],
|
318
|
+
nil, nil, nil,
|
319
|
+
nil, val[5])
|
320
|
+
|
321
|
+
method_body = @builder.begin_body(val[3], [ rescue_body ])
|
322
|
+
|
323
|
+
result = @builder.def_endless_singleton(*val[0],
|
324
|
+
val[1], val[2], method_body)
|
325
|
+
|
326
|
+
@lexer.cmdarg.pop
|
327
|
+
@lexer.cond.pop
|
328
|
+
@static_env.unextend
|
329
|
+
@context.pop
|
330
|
+
@current_arg_stack.pop
|
331
|
+
}
|
264
332
|
| backref tOP_ASGN command_rhs
|
265
333
|
{
|
266
334
|
@builder.op_assign(val[0], val[1], val[2])
|
@@ -1950,6 +2018,7 @@ opt_block_args_tail:
|
|
1950
2018
|
}
|
1951
2019
|
|
1952
2020
|
p_expr_basic: p_value
|
2021
|
+
| p_variable
|
1953
2022
|
| p_const p_lparen p_args rparen
|
1954
2023
|
{
|
1955
2024
|
@pattern_hash_keys.pop
|
@@ -2195,8 +2264,8 @@ opt_block_args_tail:
|
|
2195
2264
|
{
|
2196
2265
|
result = @builder.range_exclusive(val[0], val[1], nil)
|
2197
2266
|
}
|
2198
|
-
| p_variable
|
2199
2267
|
| p_var_ref
|
2268
|
+
| p_expr_ref
|
2200
2269
|
| p_const
|
2201
2270
|
| tBDOT2 p_primitive
|
2202
2271
|
{
|
@@ -2236,7 +2305,11 @@ opt_block_args_tail:
|
|
2236
2305
|
lvar = @builder.accessible(@builder.ident(val[1]))
|
2237
2306
|
result = @builder.pin(val[0], lvar)
|
2238
2307
|
}
|
2239
|
-
|
2308
|
+
p_expr_ref: tCARET tLPAREN expr_value tRPAREN
|
2309
|
+
{
|
2310
|
+
expr = @builder.begin(val[1], val[2], val[3])
|
2311
|
+
result = @builder.pin(val[0], expr)
|
2312
|
+
}
|
2240
2313
|
p_const: tCOLON3 cname
|
2241
2314
|
{
|
2242
2315
|
result = @builder.const_global(val[0], val[1])
|
@@ -3092,7 +3165,7 @@ require 'parser/ruby-next/parser_ext'
|
|
3092
3165
|
prepend Parser::NextExt
|
3093
3166
|
|
3094
3167
|
def version
|
3095
|
-
|
3168
|
+
31
|
3096
3169
|
end
|
3097
3170
|
|
3098
3171
|
def default_encoding
|
@@ -3100,7 +3173,7 @@ require 'parser/ruby-next/parser_ext'
|
|
3100
3173
|
end
|
3101
3174
|
|
3102
3175
|
def endless_method_name(name_t)
|
3103
|
-
if name_t[0].end_with?('=')
|
3176
|
+
if !%w[=== == != <= >=].include?(name_t[0]) && name_t[0].end_with?('=')
|
3104
3177
|
diagnostic :error, :endless_setter, nil, name_t
|
3105
3178
|
end
|
3106
3179
|
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: 3.0.0
|
4
|
+
version: 3.0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -46,9 +46,9 @@ homepage: http://github.com/ruby-next/parser
|
|
46
46
|
licenses:
|
47
47
|
- MIT
|
48
48
|
metadata:
|
49
|
-
homepage_uri: http://github.com/
|
50
|
-
source_code_uri: http://github.com/
|
51
|
-
post_install_message:
|
49
|
+
homepage_uri: http://github.com/ruby-next/parser
|
50
|
+
source_code_uri: http://github.com/ruby-next/parser
|
51
|
+
post_install_message:
|
52
52
|
rdoc_options: []
|
53
53
|
require_paths:
|
54
54
|
- lib
|
@@ -63,8 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
|
-
rubygems_version: 3.
|
67
|
-
signing_key:
|
66
|
+
rubygems_version: 3.2.15
|
67
|
+
signing_key:
|
68
68
|
specification_version: 4
|
69
69
|
summary: Parser extension to support edge and experimental Ruby syntax
|
70
70
|
test_files: []
|