context.setEnding(ending);
break;
}
case ATTRASSIGNNODE:
{
final AttrAssignNode iVisited = (AttrAssignNode) node;
Object isnull = context.getNewEnding();
Object ending = context.getNewEnding();
compileGetDefinition(iVisited.getReceiverNode(), context);
context.ifNull(isnull);
context.rescue(new BranchCallback() {
public void branch(BodyCompiler context) {
compile(iVisited.getReceiverNode(), context,true); //[IRubyObject]
context.duplicateCurrentValue(); //[IRubyObject, IRubyObject]
context.metaclass(); //[IRubyObject, RubyClass]
context.duplicateCurrentValue(); //[IRubyObject, RubyClass, RubyClass]
context.getVisibilityFor(iVisited.getName()); //[IRubyObject, RubyClass, Visibility]
context.duplicateCurrentValue(); //[IRubyObject, RubyClass, Visibility, Visibility]
final Object isfalse = context.getNewEnding();
Object isreal = context.getNewEnding();
Object ending = context.getNewEnding();
context.isPrivate(isfalse, 3); //[IRubyObject, RubyClass, Visibility]
context.isNotProtected(isreal, 1); //[IRubyObject, RubyClass]
context.selfIsKindOf(isreal); //[IRubyObject]
context.consumeCurrentValue();
context.go(isfalse);
context.setEnding(isreal); //[]
context.isMethodBound(iVisited.getName(), new BranchCallback() {
public void branch(BodyCompiler context) {
compileGetArgumentDefinition(iVisited.getArgsNode(), context, "assignment");
}
},
new BranchCallback() {
public void branch(BodyCompiler context) {