Reset nil attributes to their default values to make the spec valid
When there is an invalid block with a keyword missing an end right before another end, it is unclear where which keyword is missing the end
Take this example:
class Dog # 1 def bark # 2 puts "woof" # 3 end # 4
However due to github.com/ruby/syntax_suggest/issues/32 the problem line will be identified as:
> class Dog # 1
Because lines 2, 3, and 4 are technically valid code and are expanded first, deemed valid, and hidden. We need to un-hide the matching end line 4. Also work backwards and if there’s a mis-matched keyword, show it too
Create a new ClassVariableAndWriteNode
node.
Create a new ClassVariableOrWriteNode
node.
Create a new GlobalVariableAndWriteNode
node.
Create a new GlobalVariableOrWriteNode
node.
Create a new InstanceVariableAndWriteNode
node.
Create a new InstanceVariableOrWriteNode
node.
Create a new InterpolatedMatchLastLineNode
node.
Create a new ItLocalVariableReadNode
node.
Create a new LocalVariableAndWriteNode
node.
Create a new LocalVariableOrWriteNode
node.
foo.bar, = 1 ^^^^^^^
case foo; in bar; end ^^^^^^^^^^^^^^^^^^^^^
“foo #{bar}” ^^^^^^^^^^^^
:“foo #{bar}” ^^^^^^^^^^^^^
‘foo #{bar}` ^^^^^^^^^^^^