Skip to content

Commit 90f59cf

Browse files
committed
Adopt assigning IndexTargetNode an ATTRIBUTE_WRITE flag
1 parent ee4b714 commit 90f59cf

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

src/main/java/org/truffleruby/parser/YARPTranslator.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,7 +1606,7 @@ public RubyNode visitForNode(Nodes.ForNode node) {
16061606
} else if (node.index instanceof Nodes.CallTargetNode target) {
16071607
final var arguments = new Nodes.ArgumentsNode(NO_FLAGS, new Nodes.Node[]{ readParameter }, 0, 0);
16081608

1609-
// target flags could contain SAFE_NAVIGATION flag
1609+
// preserve target flags because they can contain SAFE_NAVIGATION flag
16101610
int flags = target.flags | Nodes.CallNodeFlags.ATTRIBUTE_WRITE;
16111611

16121612
writeIndex = new Nodes.CallNode((short) flags, target.receiver, target.name, arguments, null, 0, 0);
@@ -1624,10 +1624,7 @@ public RubyNode visitForNode(Nodes.ForNode node) {
16241624
statements[statements.length - 1] = readParameter;
16251625
arguments = new Nodes.ArgumentsNode(NO_FLAGS, statements, 0, 0);
16261626

1627-
// there are no flags at the moment that could be set for target
1628-
int flags = target.flags | Nodes.CallNodeFlags.ATTRIBUTE_WRITE;
1629-
1630-
writeIndex = new Nodes.CallNode((short) flags, target.receiver, "[]=", arguments, target.block, 0, 0);
1627+
writeIndex = new Nodes.CallNode(target.flags, target.receiver, "[]=", arguments, target.block, 0, 0);
16311628
} else if (node.index instanceof Nodes.MultiTargetNode target) {
16321629
writeIndex = new Nodes.MultiWriteNode(target.lefts, target.rest, target.rights, readParameter, 0, 0);
16331630
} else {
@@ -2007,11 +2004,7 @@ public RubyNode visitIndexTargetNode(Nodes.IndexTargetNode node) {
20072004
node.arguments.length);
20082005
}
20092006

2010-
// Prism doesn't set any flag for IndexTargetNode right now
2011-
// but let's still take flags into account as far as there may be additional flags or other changes
2012-
short flags = (short) (node.flags | Nodes.CallNodeFlags.ATTRIBUTE_WRITE);
2013-
2014-
final var callNode = new Nodes.CallNode(flags, node.receiver, "[]=", argumentsNode, node.block,
2007+
final var callNode = new Nodes.CallNode(node.flags, node.receiver, "[]=", argumentsNode, node.block,
20152008
node.startOffset,
20162009
node.length);
20172010
return callNode.accept(this);

0 commit comments

Comments
 (0)