Shorter reproduction code: ~~~ruby require 'bigdecimal' 4.times.map do Ractor.new do loop { raise unless BigDecimal(3.14) } end end sleep 1 GC.start ~~~ I guess this is a bug of BigDecimal's float parsing logic. If the...tompng (tomoya ishida)
I think checking code validness is hard for the code below. Warning check is triggered at every line, each check needs to parse till the bottom. ~~~ruby a -1 => b # only a(-1 => b) is valid, (a - 1) => b is invalid at the `2 => 3` pos...tompng (tomoya ishida)
The same thing can be also said to `a=[1,2]` and `a=1,2`. In Prism, these are both parsed as ArrayNode with/without opening and closing. In AbstractSyntaxTree, the non-abstract parts (bracket) are dropped. I think it's just a restricti...tompng (tomoya ishida)
`return a, &b` is syntax error in parse.y, but accepted in Prism ~~~ruby Prism.parse_success?('return a, &b') #=> true RubyVM::AbstractSyntaxTree.parse('return a, &b') #=> block argument should not be given (SyntaxError) ~~~ W...tompng (tomoya ishida)
These are syntax error in both parse.y and in Prism ~~~ruby a x in pattern a x: in pattern a &x in pattern a *x => pattern a x: => pattern a &x => pattern ~~~ These are all syntax error in parse.y, all syntax valid in Prism ~...tompng (tomoya ishida)
Shorter reproduction code ~~~ruby /(?<a>foo)/ =~ 'bar' /(?<b>baz)/ =~ 'baz' p b # should be present, got nil with RUBY_BOX=1 ~~~ ~~~ruby /foo/ =~ 'bar' $~ /baz/ =~ 'baz' p $~ # should be MatchData, got nil with RUBY_BOX=1 ...tompng (tomoya ishida)
I found 130 (5 sets of 26 alphabets) characters matching both `\p{S}` and `\p{Word}`. The visual looks like alphabet-ish symbol character ~~~ruby (0..0x10ffff).select{(s=''<<it; s=~/\p{Word}/&&s=~/\p{S}/) rescue false}.map{''<<it}.joi...tompng (tomoya ishida)