public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     if (Process(yieldReturnStatement))
     {
         visitor.Visit(yieldReturnStatement);
     }
     base.Visit(yieldReturnStatement);
 }
 public override bool Visit(IYieldReturnStatement statement, IStatement context)
 {
     _stack.Push(statement);
     try
     {
         return(base.Visit(statement, context));
     }
     finally
     {
         _stack.Pop();
     }
 }
예제 #3
0
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
 {
     this.PrintToken(VBToken.Indent);
     this.PrintToken(VBToken.YieldReturn);
     if (yieldReturnStatement.Expression != null)
     {
         this.PrintToken(VBToken.Space);
         this.Traverse(yieldReturnStatement.Expression);
     }
     this.PrintToken(VBToken.Semicolon);
     this.PrintToken(VBToken.NewLine);
 }
예제 #4
0
 /// <summary>
 /// Traverses the children of the yield return statement.
 /// </summary>
 public virtual void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
 {
     Contract.Requires(yieldReturnStatement != null);
       this.TraverseChildren((IStatement)yieldReturnStatement);
       if (this.StopTraversal) return;
       this.Traverse(yieldReturnStatement.Expression);
 }
예제 #5
0
 /// <summary>
 /// Performs some computation with the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual void Visit(IYieldReturnStatement yieldReturnStatement)
 {
 }
예제 #6
0
파일: Mutator.cs 프로젝트: riverar/devtools
 public void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     this.result = this.rewriter.Rewrite(yieldReturnStatement);
 }
예제 #7
0
 TransformationImpact IStatementVisitor <TransformationImpact> .Visit(IYieldReturnStatement statement)
 {
     return(CalculateRefactorImpact(statement));
 }
예제 #8
0
파일: Copier.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Returns a shallow copy of the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public YieldReturnStatement Copy(IYieldReturnStatement yieldReturnStatement)
 {
     return new YieldReturnStatement(yieldReturnStatement);
 }
예제 #9
0
파일: Mutator.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Visits the specified yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement">The yield return statement.</param>
 public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     YieldReturnStatement mutableYieldReturnStatement = yieldReturnStatement as YieldReturnStatement;
     if (alwaysMakeACopy || mutableYieldReturnStatement == null) mutableYieldReturnStatement = new YieldReturnStatement(yieldReturnStatement);
     this.resultStatement = this.myCodeMutator.Visit(mutableYieldReturnStatement);
 }
예제 #10
0
 public abstract void Translate(IYieldReturnStatement statement);
예제 #11
0
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement) {
   this.foundYield = true;
   if (this.foundAnonymousDelegate)
     this.StopTraversal = true;
   else
     base.TraverseChildren(yieldReturnStatement);
 }
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement) {
   this.foundYield = true;
   base.TraverseChildren(yieldReturnStatement);
 }
예제 #13
0
 /// <summary>
 /// Replace a (yield return exp)with a new block of the form:
 /// {
 ///   Fresh_Label:;
 ///   this.current = exp;
 ///   state = Fresh_state;
 ///   return true;
 /// }
 /// and associate the newly generated Fresh_state with its entry point: Fresh_label.
 /// </summary>
 public override IStatement Rewrite(IYieldReturnStatement yieldReturnStatement) {
   BlockStatement blockStatement = new BlockStatement();
   int state = this.stateNumber++;
   ExpressionStatement thisDotStateEqState = new ExpressionStatement() {
     Expression = new Assignment() {
       Source = new CompileTimeConstant() { Value = state, Type = this.host.PlatformType.SystemInt32 },
       Target = new TargetExpression() { Definition = this.iteratorClosure.StateFieldReference, Instance = new ThisReference(), Type = this.host.PlatformType.SystemInt32 },
       Type = this.host.PlatformType.SystemInt32,
     },
     Locations = IteratorHelper.EnumerableIsEmpty(yieldReturnStatement.Locations) ? null : new List<ILocation>(yieldReturnStatement.Locations)
   };
   blockStatement.Statements.Add(thisDotStateEqState);
   ExpressionStatement thisDotCurrentEqReturnExp = new ExpressionStatement() {
     Expression = new Assignment() {
       Source = yieldReturnStatement.Expression,
       Target = new TargetExpression() { Definition = this.iteratorClosure.CurrentFieldReference, Instance = new ThisReference(), Type = this.iteratorClosure.CurrentFieldReference.Type },
       Type = this.iteratorClosure.CurrentFieldReference.Type
     }
   };
   blockStatement.Statements.Add(thisDotCurrentEqReturnExp);
   ReturnStatement returnTrue = new ReturnStatement() {
     Expression = new CompileTimeConstant() {
       Value = true, Type = this.host.PlatformType.SystemBoolean
     }
   };
   blockStatement.Statements.Add(returnTrue);
   LabeledStatement labeledStatement = new LabeledStatement() {
     Label = this.host.NameTable.GetNameFor("Label"+state), Statement = new EmptyStatement()
   };
   blockStatement.Statements.Add(labeledStatement);
   this.stateEntries.Add(state, labeledStatement);
   return blockStatement;
 }
 public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     if(Process(yieldReturnStatement)){visitor.Visit(yieldReturnStatement);}
     base.Visit(yieldReturnStatement);
 }
예제 #15
0
 public TransformationKind Visit(IYieldReturnStatement statement, ITransformationContext context)
 {
     throw new NotImplementedException();
 }
예제 #16
0
 /// <summary>
 /// Performs some computation with the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     this.Visit((IStatement)yieldReturnStatement);
 }
예제 #17
0
파일: Visitor.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Generates IL for the specified yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement">The yield return statement.</param>
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
 {
     Contract.Assume(false, "IYieldReturnStatement nodes must be replaced before trying to convert the Code Model to IL.");
 }
예제 #18
0
 public void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     throw new NotImplementedException();
 }
예제 #19
0
 public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     allElements.Add(new InvokInfo(Traverser, "IYieldReturnStatement", yieldReturnStatement));
 }
예제 #20
0
 public virtual void onASTElement(IYieldReturnStatement yieldReturnStatement) { }
예제 #21
0
 public bool Visit(IYieldReturnStatement statement, TContext context)
 {
     return(false);
 }
예제 #22
0
파일: Copier.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Returns a deep copy of the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public YieldReturnStatement Copy(IYieldReturnStatement yieldReturnStatement)
 {
     var mutableCopy = this.shallowCopier.Copy(yieldReturnStatement);
       mutableCopy.Expression = this.Copy(mutableCopy.Expression);
       return mutableCopy;
 }
예제 #23
0
 public virtual void onASTElement(IYieldReturnStatement yieldReturnStatement)
 {
 }
예제 #24
0
파일: Copier.cs 프로젝트: riverar/devtools
 public void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     this.result = this.copier.Copy(yieldReturnStatement);
 }
예제 #25
0
 void IStatementVisitor.Visit(IYieldReturnStatement statement)
 {
     this.Translate(statement);
 }
예제 #26
0
 public abstract TransformationImpact CalculateRefactorImpact(IYieldReturnStatement statement);
예제 #27
0
파일: Mutator.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Rewrites the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual IStatement Rewrite(IYieldReturnStatement yieldReturnStatement)
 {
     var mutableYieldReturnStatement = yieldReturnStatement as YieldReturnStatement;
       if (mutableYieldReturnStatement == null) return yieldReturnStatement;
       this.RewriteChildren(mutableYieldReturnStatement);
       return mutableYieldReturnStatement;
 }
예제 #28
0
        public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
{ MethodEnter(yieldReturnStatement);
            base.TraverseChildren(yieldReturnStatement);
     MethodExit();   }
 /// <summary>
 /// Rewrites the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual IStatement Rewrite(IYieldReturnStatement yieldReturnStatement)
 {
     return yieldReturnStatement;
 }
예제 #30
0
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(yieldReturnStatement);
       this.Visit(yieldReturnStatement.Expression);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not decrease this.path.Count.
       this.path.Pop();
 }
예제 #31
0
    /// <summary>
    /// Returns a shallow copy of the given yield return statement.
    /// </summary>
    /// <param name="yieldReturnStatement"></param>
    public YieldReturnStatement Copy(IYieldReturnStatement yieldReturnStatement) {
      Contract.Requires(yieldReturnStatement != null);
      Contract.Ensures(Contract.Result<YieldReturnStatement>() != null);

      return new YieldReturnStatement(yieldReturnStatement);
    }
예제 #32
0
 /// <summary>
 /// Traverses the yield return statement.
 /// </summary>
 public void Traverse(IYieldReturnStatement yieldReturnStatement)
 {
     Contract.Requires(yieldReturnStatement != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(yieldReturnStatement);
       if (this.StopTraversal) return;
       this.TraverseChildren(yieldReturnStatement);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(yieldReturnStatement);
 }
예제 #33
0
    /// <summary>
    /// Returns a deep copy of the given yield return statement.
    /// </summary>
    /// <param name="yieldReturnStatement"></param>
    public YieldReturnStatement Copy(IYieldReturnStatement yieldReturnStatement) {
      Contract.Requires(yieldReturnStatement != null);
      Contract.Ensures(Contract.Result<YieldReturnStatement>() != null);

      var mutableCopy = this.shallowCopier.Copy(yieldReturnStatement);
      mutableCopy.Expression = this.Copy(mutableCopy.Expression);
      return mutableCopy;
    }
예제 #34
0
 public void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     this.traverser.Traverse(yieldReturnStatement);
 }
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
 {
     this.foundYield = true;
     base.TraverseChildren(yieldReturnStatement);
 }
예제 #36
0
 public void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     Contract.Requires(yieldReturnStatement != null);
       throw new NotImplementedException();
 }
 /// <summary>
 /// Performs some computation with the given yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public virtual void Visit(IYieldReturnStatement yieldReturnStatement)
 {
 }
예제 #38
0
 public abstract IStatement Transform(IYieldReturnStatement statement);
예제 #39
0
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement) {
   this.PrintToken(CSharpToken.Indent);
   this.PrintToken(CSharpToken.YieldReturn);
   if (yieldReturnStatement.Expression != null) {
     this.PrintToken(CSharpToken.Space);
     this.Traverse(yieldReturnStatement.Expression);
   }
   this.PrintToken(CSharpToken.Semicolon);
   this.PrintToken(CSharpToken.NewLine);
 }
예제 #40
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="yieldReturnStatement"></param>
 public YieldReturnStatement(IYieldReturnStatement yieldReturnStatement)
   : base(yieldReturnStatement) {
   this.expression = yieldReturnStatement.Expression;
 }
예제 #41
0
파일: Copier.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Visits the specified yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement">The yield return statement.</param>
 public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     YieldReturnStatement mutableYieldReturnStatement = new YieldReturnStatement(yieldReturnStatement);
     this.resultStatement = this.myCodeCopier.DeepCopy(mutableYieldReturnStatement);
 }
예제 #42
0
 public override void TraverseChildren(IYieldReturnStatement yieldReturnStatement)
 {
     MethodEnter(yieldReturnStatement);
     base.TraverseChildren(yieldReturnStatement);
     MethodExit();
 }
예제 #43
0
파일: Mutator.cs 프로젝트: riverar/devtools
 /// <summary>
 /// Visits the specified yield return statement.
 /// </summary>
 /// <param name="yieldReturnStatement">The yield return statement.</param>
 public override void Visit(IYieldReturnStatement yieldReturnStatement)
 {
     YieldReturnStatement mutableYieldReturnStatement = yieldReturnStatement as YieldReturnStatement;
     if (mutableYieldReturnStatement == null) {
       this.resultStatement = yieldReturnStatement;
       return;
     }
     this.resultStatement = this.myCodeMutator.Visit(mutableYieldReturnStatement);
 }