@@ -224,35 +224,33 @@ private StatementNode getWriteNode(String name, FrameSlot slot, ExpressionNode r
224224 return factory .createWriteLocal (right , slot );
225225 }
226226
227- private StatementNode getWriteNode (String name , Function <FrameSlot , ReadArgumentNode > getReadNode ) {
228- FrameSlot slot = currentScope .findFrameSlot (name );
229- ExpressionNode right = getReadNode .apply (slot ).asExpression ();
230-
231- return getWriteNode (name , slot , right );
227+ private StatementNode getWriteNode (String name , Function <Integer , ReadArgumentNode > getReadNode ) {
228+ ExpressionNode right = getReadNode .apply (currentScope .getVariableIndex (name )).asExpression ();
229+ return getWriteNode (name , currentScope .findFrameSlot (name ), right );
232230 }
233231
234232 public StatementNode getWriteArgumentToLocal (String name ) {
235- return getWriteNode (name , slot -> ReadIndexedArgumentNode .create (slot . getIndex () ));
233+ return getWriteNode (name , index -> ReadIndexedArgumentNode .create (index ));
236234 }
237235
238236 public StatementNode getWriteKeywordArgumentToLocal (String name , ReadDefaultArgumentNode readDefaultArgumentNode ) {
239- return getWriteNode (name , slot -> ReadKeywordNode .create (name , slot . getIndex () , readDefaultArgumentNode ));
237+ return getWriteNode (name , index -> ReadKeywordNode .create (name , index , readDefaultArgumentNode ));
240238 }
241239
242240 public StatementNode getWriteRequiredKeywordArgumentToLocal (String name ) {
243- return getWriteNode (name , slot -> ReadKeywordNode .create (name ));
241+ return getWriteNode (name , index -> ReadKeywordNode .create (name ));
244242 }
245243
246244 public StatementNode getWriteRequiredKeywordArgumentToLocal (String name , ReadDefaultArgumentNode readDefaultArgumentNode ) {
247- return getWriteNode (name , slot -> ReadKeywordNode .create (name , readDefaultArgumentNode ));
245+ return getWriteNode (name , index -> ReadKeywordNode .create (name , readDefaultArgumentNode ));
248246 }
249247
250248 public StatementNode getWriteVarArgsToLocal (String name ) {
251- return getWriteNode (name , slot -> ReadVarArgsNode .create (slot . getIndex () ));
249+ return getWriteNode (name , index -> ReadVarArgsNode .create (index ));
252250 }
253251
254252 public StatementNode getWriteKwArgsToLocal (String name , String [] names ) {
255- return getWriteNode (name , slot -> ReadVarKeywordsNode .createForUserFunction (names ));
253+ return getWriteNode (name , index -> ReadVarKeywordsNode .createForUserFunction (names ));
256254 }
257255
258256 static ScopeInfo findVariableScope (ScopeInfo enclosingScope , String identifier ) {
0 commit comments