[#99115] [Ruby master Bug#17023] How to prevent String memory to be relocated in ruby-ffi — larskanis@...
Issue #17023 has been reported by larskanis (Lars Kanis).
22 messages
2020/07/10
[#99375] [Ruby master Feature#17055] Allow suppressing uninitialized instance variable and method redefined verbose mode warnings — merch-redmine@...
Issue #17055 has been reported by jeremyevans0 (Jeremy Evans).
29 messages
2020/07/28
[#101207] [Ruby master Feature#17055] Allow suppressing uninitialized instance variable and method redefined verbose mode warnings
— merch-redmine@...
2020/12/02
Issue #17055 has been updated by jeremyevans0 (Jeremy Evans).
[#101231] Re: [Ruby master Feature#17055] Allow suppressing uninitialized instance variable and method redefined verbose mode warnings
— Austin Ziegler <halostatue@...>
2020/12/03
What does this mean?
[ruby-core:99072] [Ruby master Bug#17013] `RubyVM::AbstractSyntaxTree.parse("struct.field += foo")` has no operator
From:
manga.osyo@...
Date:
2020-07-05 23:58:55 UTC
List:
ruby-core #99072
Issue #17013 has been updated by osyo (manga osyo).
Thanks! :)
----------------------------------------
Bug #17013: `RubyVM::AbstractSyntaxTree.parse("struct.field += foo")` has no operator
https://bugs.ruby-lang.org/issues/17013#change-86446
* Author: osyo (manga osyo)
* Status: Closed
* Priority: Normal
* ruby -v: ruby 2.8.0dev (2020-07-05T10:15:03Z master 4ea57c2a39) [x86_64-linux]
* Backport: 2.5: DONTNEED, 2.6: REQUIRED, 2.7: REQUIRED
----------------------------------------
## Summary
`RubyVM::AbstractSyntaxTree.parse("struct.field += foo")` has no operator.
I'm making a tool that uses AST, but I'm having trouble finding a way to distinguish `struct.field += foo` and `struct.field -= foo` because of this.
## Expected behavior
```ruby
node = RubyVM::AbstractSyntaxTree.parse("struct.field += foo")
body = node.children.last
# have operator (:+)
pp body.type # => :OP_ASGN2
pp body.children # => [(VCALL@1:0-1:6 :struct), false, :field, :+, (VCALL@1:16-1:19 :foo)]
```
## Actual behavior
```ruby
node = RubyVM::AbstractSyntaxTree.parse("struct.field += foo")
body = node.children.last
# have not operator (:+)
pp body.type # => :OP_ASGN2
pp body.children # => [(VCALL@1:0-1:6 :struct), false, :field, (VCALL@1:16-1:19 :foo)]
```
Also, `OP_ASGN1` and `LASGN` have operator (`:+`).
```
node = RubyVM::AbstractSyntaxTree.parse("ary[0] += foo")
body = node.children.last
pp body.type # => :OP_ASGN1
pp body.children # => [(VCALL@1:0-1:3 :ary), :+, (LIST@1:4-1:5 (LIT@1:4-1:5 0) nil), (VCALL@1:10-1:13 :foo)]
node = RubyVM::AbstractSyntaxTree.parse("ary += foo")
body = node.children.last
pp body.type # => :LASGN
pp body.children # => [:ary, (CALL@1:0-1:10 (LVAR@1:0-1:3 :ary) :+ (LIST@1:7-1:10 (VCALL@1:7-1:10 :foo) nil))]
```
## Versions
* `ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]`
* `ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]`
* `ruby 2.8.0dev (2020-07-05T10:15:03Z master 4ea57c2a39) [x86_64-linux]`
## Patch
* PR : https://github.com/ruby/ruby/pull/3294
* Operator position is aligned with `struct.field + = foo`
* Operator positions can be changed if desired
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>