Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
 
 package org.jruby.ast;
 
 import org.jruby.Ruby;

Author(s):
enebo
public class AttrAssignThreeArgNode extends AttrAssignNode {
    private Node arg1;
    private Node arg2;
    private Node arg3;
    
    public AttrAssignThreeArgNode(ISourcePosition positionNode receiverNodeString nameArrayNode argsNode) {
        super(positionreceiverNodenameargsNode);
        
        assert argsNode.size() == 3 : "argsNode.size() is 3";
        
         = argsNode.get(0);
         = argsNode.get(1);
         = argsNode.get(2);
    }
    
    @Override
    public IRubyObject interpret(Ruby runtimeThreadContext contextIRubyObject selfBlock aBlock) {
        IRubyObject receiver = .interpret(runtimecontextselfaBlock);
        IRubyObject param1 = .interpret(runtimecontextselfaBlock);
        IRubyObject param2 = .interpret(runtimecontextselfaBlock);
        IRubyObject param3 = .interpret(runtimecontextselfaBlock);        
        
        assert hasMetaClass(receiver) : receiverClassName(receiver);
        
        // If reciever is self then we do the call the same way as vcall
        CallSite callSite = selectCallSite(selfreceiver);
        callSite.call(contextselfreceiverparam1param2param3);
        return param3;
    }
    
        
    @Override
    public IRubyObject assign(Ruby runtimeThreadContext contextIRubyObject selfIRubyObject valueBlock aBlockboolean checkArity) {
        IRubyObject receiver = .interpret(runtimecontextselfaBlock);
        IRubyObject param1 = .interpret(runtimecontextselfaBlock);
        IRubyObject param2 = .interpret(runtimecontextselfaBlock);
        IRubyObject param3 = .interpret(runtimecontextselfaBlock);        
        
        assert hasMetaClass(receiver) : receiverClassName(receiver);
        
        // If reciever is self then we do the call the same way as vcall
        CallSite callSite = selectCallSite(selfreceiver);
        callSite.call(contextselfreceiverparam1param2param3value);
        
        return runtime.getNil();
    }    
New to GrepCode? Check out our FAQ X