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 Colon2ConstNode extends Colon2Node {
    private ConstantCache cache;
    
    public Colon2ConstNode(ISourcePosition positionNode leftNodeString name) {
        super(positionleftNodename);
        assert leftNode != null"Colon2ConstNode cannot have null leftNode";
    }
    @Override
    public IRubyObject interpret(Ruby runtimeThreadContext contextIRubyObject selfBlock aBlock) {
        RubyModule target = Helpers.checkIsModule(.interpret(runtimecontextselfaBlock));
        IRubyObject value = getValue(contexttarget);
        return value != null ? value : target.getConstantFromConstMissing();
    }
    @Override
    public RubyString definition(Ruby runtimeThreadContext contextIRubyObject selfBlock aBlock) {
        IRubyObject lastError = context.getErrorInfo();
        try {
            if (Helpers.isModuleAndHasConstant(
                    .interpret(runtimecontextselfaBlock), )) {
                return runtime.getDefinedMessage(.);
            }
        } catch (JumpException e) {
            // replace lastError
            context.setErrorInfo(lastError);
        }
        return null;
    }
    public IRubyObject getValue(ThreadContext contextRubyModule target) {
        ConstantCache cache = this.;
        return ConstantCache.isCachedFrom(targetcache) ? cache.value : reCache(contexttarget);
    }
    public IRubyObject reCache(ThreadContext contextRubyModule target) {
        Invalidator invalidator = context.runtime.getConstantInvalidator();
        Object newGeneration = invalidator.getData();
        IRubyObject value = target.getConstantFromNoConstMissing(false);
        if (value != null) {
             = new ConstantCache(valuenewGenerationinvalidatortarget.hashCode());
        } else {
             = null;
        }
        return value;
    }
New to GrepCode? Check out our FAQ X