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.ir.instructions.defined;
 
 import org.jruby.Ruby;
    public ClassVarIsDefinedInstr(Variable resultOperand moduleStringLiteral name) {
        super(.resultnew Operand[] { modulename });
    }
    @Override
    public Instr cloneForInlining(InlinerInfo inlinerInfo) {
        return new ClassVarIsDefinedInstr((VariablegetResult().cloneForInlining(inlinerInfo), 
                getObject().cloneForInlining(inlinerInfo),
                (StringLiteralgetName().cloneForInlining(inlinerInfo));
    }
    @Override
    public Object interpret(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempBlock block) {
        Ruby runtime = context.runtime;
        RubyModule cm = (RubyModulegetObject().retrieve(contextselfcurrDynScopetemp);
        String name = getName().;        
        boolean defined = cm.isClassVarDefined(name);
        
        if (!defined && cm.isSingleton()) { // Not found look for cvar on singleton
            IRubyObject attached = ((MetaClass)cm).getAttached();
            if (attached instanceof RubyModuledefined = ((RubyModule)attached).isClassVarDefined(name);
        }
        
        return runtime.newBoolean(defined);        
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.ClassVarIsDefinedInstr(this);
    }
New to GrepCode? Check out our FAQ X