Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.parser;
  
  import org.jruby.ast.Node;
 
 public class IRStaticScope extends StaticScope {
     private static final String[] NO_NAMES = new String[0];
 
     boolean isBlock;         // Is this a block scope?
     boolean isEval;          // Is this an eval scope?
     boolean isBlockOrEval;
     boolean isArgumentScope// Is this block and argument scope of a define_method (for the purposes of zsuper).
 
     IRScope irScope// Method/Closure that this static scope corresponds to
 
     protected IRStaticScope(StaticScope enclosingScopeboolean isBlockboolean isEval) {
         this(enclosingScopeisBlockisEval);
     }
 
     protected IRStaticScope(StaticScope enclosingScopeString[] namesboolean isBlockboolean isEval) {
         super(enclosingScopenames);
         this. = isBlock;
         this. = isEval;
         this. = isBlock || isEval;
         this. = !;
         this. = null;
     }
 
     public StaticScope getLocalScope() {
         return ( || !) ? this : .getLocalScope();
     }
 
     public int isDefined(String nameint depth) {
         if () {
             int slot = exists(name); 
             if (slot >= 0) return (depth << 16) | slot;
             
             return .isDefined(namedepth + 1);
         }
         else {
             return (depth << 16) | exists(name);
         }
     }
 
     @Override
     public boolean isBlockScope() {
         return ;
     }
 
     @Override
     public boolean isArgumentScope() {
         return ;
     }
 
     @Override
     public void makeArgumentScope() {
         this. = true;
     }

    
 
     public String[] getAllNamesInScope() {
         String[] names = getVariables();
         if () {
             String[] ourVariables = names;
             String[] variables = .getAllNamesInScope();
             
             // we know variables cannot be null since this IRStaticScope always returns a non-null array
             names = new String[variables.length + ourVariables.length];
             
             System.arraycopy(variables, 0, names, 0, variables.length);
             System.arraycopy(ourVariables, 0, namesvariables.lengthourVariables.length);
         }
         
         return names;
     }
 
     public AssignableNode addAssign(ISourcePosition positionString nameNode value) {
         int slot = addVariable(name);
         // No bit math to store level since we know level is zero for this case
         return new DAsgnNode(positionnameslotvalue);
     }
     
     public AssignableNode assign(ISourcePosition positionString nameNode value
             StaticScope topScopeint depth) {
         int slot = exists(name);
         
         // We can assign if we already have variable of that name here or we are the only
         // scope in the chain (which Local scopes always are).
         if (slot >= 0) {
             return  ? new DAsgnNode(positionname, ((depth << 16) | slot), value
                           : new LocalAsgnNode(positionname, ((depth << 16) | slot), value);
        } else if (! && (topScope == this)) {
            slot = addVariable(name);
            return new LocalAsgnNode(positionnameslot , value);
        }
        
        // If we are not a block-scope and we go there, we know that 'topScope' is a block scope 
        // because a local scope cannot be within a local scope
        // If topScope was itself it would have created a LocalAsgnNode above.
        return  ? .assign(positionnamevaluetopScopedepth + 1)
                       : ((IRStaticScope)topScope).addAssign(positionnamevalue);
    }
    public Node declare(ISourcePosition positionString nameint depth) {
        int slot = exists(name);
        if (slot >= 0) {
            return  ? new DVarNode(position, ((depth << 16) | slot), name) : new LocalVarNode(position, ((depth << 16) | slot), name);
        }
        return  ? .declare(positionnamedepth + 1) : new VCallNode(positionname);
    }
    
    @Override
    public String toString() {
        return "IRStaticScope" + ( ? "(BLOCK): " : "(LOCAL): ") + super.toString();
    }
    public IRScope getIRScope() {
        return ;
    }
    public void setIRScope(IRScope irScope) {
        this. = irScope;
    }
    @Override
    public int getNumberOfVariables() {
        return ( == null) ? super.getNumberOfVariables() : .getUsedVariablesCount();
    }
    @Override
    public Type getType() {
        return  ? . :
                 ? . :
                .;
    }
New to GrepCode? Check out our FAQ X