public void TestIsInjectable()
 {
     var var = new Variable("", ClrType.FromDescriptor("X"), false, false);
     Assert.IsFalse(globalVariables.IsInjectable(var));
     globalVariables.SetInjectable(var);
     Assert.IsTrue(globalVariables.IsInjectable(var));
 }
 public void Setup()
 {
     state = new VariableState();
     instance = new Variable("var", null, false, false);
     field = new FieldInfo(null, "field", null, false, false, false);
     localField = new LocalField(instance, field);
 }
 public int GetLoDCount(Variable variable)
 {
     int count;
     if ( lodCount.Find(variable, out count) ) return count;
     
     var localField = variable as LocalField;
     if ( localField != null ) return GetLoDCount(localField.GetField());
         
     return 0;
 }
 public override void SetInjectable(Variable variable)
 {
     if ( variable is LocalField || variable is FieldInfo )
     {
         globalVariables.SetInjectable(variable);
     }
     else
     {
         base.SetInjectable(variable);
     }
 }
 public void testApplySwaps()
 {
     Swap swap = new Swap(-1);
     Variable first = new Variable(null, ClrType.Boolean, false, false);
     Variable second = new Variable(null, ClrType.Boolean, false, false);
     IList<Variable> inputs = new ArrayList<Variable>();
     inputs.Add(first);
     inputs.Add(second);
     IList<Variable> output = swap.apply(inputs);
     Assert.AreSame(second, output[0]);
     Assert.AreSame(first, output[1]);
 }
 public virtual bool IsGlobal(Variable variable)
 {
     if ( variable == null ) return false;
     if ( variable.IsGlobal ) return true;
     if ( globals.Contains(variable) ) return true;
     
     var field = variable as LocalField;
     if ( field != null )
     {
         return globals.Contains(field.GetInstance()) || globals.Contains(field.GetField());
     }
     return false;
 }
 public virtual bool IsInjectable(Variable variable)
 {
     if ( variable == null ) return false;
     if ( injectables.Contains(variable) )
     {
         return true;
     }
     
     var field = variable as LocalField;
     if ( field != null )
     {
         return injectables.Contains(field.GetField());
     }
     return false;
 }
 public void SetLoDCount(Variable variable, int newCount)
 {
     int count;
     if(!lodCount.Find(variable, out count))
     {
         count = 0;
     }
     else
     {
         if(count < newCount)
         {
             count = newCount;
         }
     }
     lodCount[variable] = count;
 }
 public override bool IsInjectable(Variable variable)
 {
     return base.IsInjectable(variable) || globalVariables.IsInjectable(variable);
 }
 public override bool IsGlobal(Variable variable)
 {
     return base.IsGlobal(variable) || globalVariables.IsGlobal(variable);
 }
 public virtual void SetInjectable(Variable variable)
 {
     injectables.Add(variable);
 }
 public virtual void SetGlobal(Variable variable)
 {
     globals.Add(variable);
 }