Compile a InstanceVariableOperatorWriteNode
node
@foo &&= bar
becomes
@foo && @foo = bar
@foo ||= bar
becomes
@foo || @foo = bar
@foo += bar
becomes
@foo = @foo + bar
Dispatch enter and leave events for InstanceVariableAndWriteNode
nodes and continue walking the tree.
Dispatch enter and leave events for InstanceVariableOperatorWriteNode
nodes and continue walking the tree.
Dispatch enter and leave events for InstanceVariableOrWriteNode
nodes and continue walking the tree.
Inspect a InstanceVariableAndWriteNode
node.
Inspect a InstanceVariableOperatorWriteNode
node.
Inspect a InstanceVariableOrWriteNode
node.
Copy a InstanceVariableAndWriteNode
node
Copy a InstanceVariableOperatorWriteNode
node
Copy a InstanceVariableOrWriteNode
node
The logical inverse of ‘capture_last_end_same_indent`
When there is an invalid block with an ‘end` missing a keyword right after another `end`, it is unclear where which end is missing the keyword.
Take this example:
class Dog # 1 puts "woof" # 2 end # 3 end # 4
the problem line will be identified as:
> end # 4
This happens because lines 1, 2, and 3 are technically valid code and are expanded first, deemed valid, and hidden. We need to un-hide the matching keyword on line 1. Also work backwards and if there’s a mis-matched end, show it too
@foo += bar ^^^^^^^^^^^
@foo &&= bar ^^^^^^^^^^^^
@foo ||= bar ^^^^^^^^^^^^
foo += baz ^^^^^^^^^^^^^^^
foo &&= baz ^^^^^^^^^^^^^^^^
foo ||= baz ^^^^^^^^^^^^^^^^