Ejemplo n.º 1
0
 public override void Visit(IAssumeStatement assumeStatement)
 {
     if (Process(assumeStatement))
     {
         visitor.Visit(assumeStatement);
     }
     base.Visit(assumeStatement);
 }
Ejemplo n.º 2
0
 public override void TraverseChildren(IAssumeStatement assumeStatement) {
   this.PrintToken(CSharpToken.Indent);
   sourceEmitterOutput.Write("CodeContract.Assume(");
   this.Traverse(assumeStatement.Condition);
   if (assumeStatement.Description != null) {
     sourceEmitterOutput.Write(",");
     this.Traverse(assumeStatement.Description);
   }
   sourceEmitterOutput.WriteLine(");");
 }
Ejemplo n.º 3
0
 public override void TraverseChildren(IAssumeStatement assumeStatement)
 {
     this.PrintToken(VBToken.Indent);
     sourceEmitterOutput.Write("CodeContract.Assume(");
     this.Traverse(assumeStatement.Condition);
     if (assumeStatement.Description != null)
     {
         sourceEmitterOutput.Write(",");
         this.Traverse(assumeStatement.Description);
     }
     sourceEmitterOutput.WriteLine(");");
 }
 public override void TraverseChildren(IAssumeStatement assumeStatement)
 {
     Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition);
     Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type);
     if (conditionType == this.sink.Heap.RefType)
     {
         conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef));
     }
     else if (conditionType == Bpl.Type.Int)
     {
         conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0));
     }
     else
     {
         System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool);
     }
     StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr));
 }
Ejemplo n.º 5
0
        /// <summary>
        ///     Converts the assume statement into a call to Contract.Assume
        /// </summary>
        public override IStatement Rewrite(IAssumeStatement assumeStatement)
        {
            var methodCall = new MethodCall
            {
                Arguments =
                    new List <IExpression>
                {
                    Rewrite(assumeStatement.Condition),
                    assumeStatement.Description ?? new CompileTimeConstant {
                        Type = host.PlatformType.SystemString, Value = "Assume"
                    }
                },
                IsStaticCall = true,
                MethodToCall = AssumeReference,
                Type         = systemVoid,
                Locations    = new List <ILocation>(assumeStatement.Locations)
            };
            var es = new ExpressionStatement
            {
                Expression = methodCall
            };

            return(es);
        }
Ejemplo n.º 6
0
 public void Visit(IAssumeStatement assumeStatement)
 {
     this.result = this.copier.Copy(assumeStatement);
 }
 public override void Visit(IAssumeStatement assumeStatement)
 {
     if(Process(assumeStatement)){visitor.Visit(assumeStatement);}
     base.Visit(assumeStatement);
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Returns a shallow copy of the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public AssumeStatement Copy(IAssumeStatement assumeStatement)
 {
     return new AssumeStatement(assumeStatement);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Performs some computation with the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual void Visit(IAssumeStatement assumeStatement)
 {
     this.Visit((IStatement)assumeStatement);
 }
Ejemplo n.º 10
0
 public void Visit(IAssumeStatement assumeStatement)
 {
     Contract.Requires(assumeStatement != null);
       throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Performs some computation with the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual void Visit(IAssumeStatement assumeStatement)
 {
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Traverses the children of the assume statement.
 /// </summary>
 public virtual void TraverseChildren(IAssumeStatement assumeStatement)
 {
     Contract.Requires(assumeStatement != null);
       this.TraverseChildren((IStatement)assumeStatement);
       if (this.StopTraversal) return;
       this.Traverse(assumeStatement.Condition);
       if (this.StopTraversal) return;
       if (assumeStatement.Description != null)
     this.Traverse(assumeStatement.Description);
 }
Ejemplo n.º 13
0
    /// <summary>
    /// Returns a shallow copy of the given assume statement.
    /// </summary>
    /// <param name="assumeStatement"></param>
    public AssumeStatement Copy(IAssumeStatement assumeStatement) {
      Contract.Requires(assumeStatement != null);
      Contract.Ensures(Contract.Result<AssumeStatement>() != null);

      return new AssumeStatement(assumeStatement);
    }
 /// <summary>
 /// Performs some computation with the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual void Visit(IAssumeStatement assumeStatement)
 {
 }
Ejemplo n.º 15
0
 /// <summary>
 /// Converts the assume statement into a call to Contract.Assume
 /// </summary>
 public override IStatement Rewrite(IAssumeStatement assumeStatement) {
   var methodCall = new MethodCall() {
     Arguments = new List<IExpression> { assumeStatement.Condition, },
     IsStaticCall = true,
     MethodToCall = this.contractProvider.ContractMethods.Assume,
     Type = systemVoid,
     Locations = new List<ILocation>(assumeStatement.Locations),
   };
   ExpressionStatement es = new ExpressionStatement() {
     Expression = methodCall
   };
   return es;
 }
Ejemplo n.º 16
0
    /// <summary>
    /// Returns a deep copy of the given assume statement.
    /// </summary>
    /// <param name="assumeStatement"></param>
    public AssumeStatement Copy(IAssumeStatement assumeStatement) {
      Contract.Requires(assumeStatement != null);
      Contract.Ensures(Contract.Result<AssumeStatement>() != null);

      var mutableCopy = this.shallowCopier.Copy(assumeStatement);
      mutableCopy.Condition = this.Copy(mutableCopy.Condition);
      if (mutableCopy.Description != null)
        mutableCopy.Description = this.Copy(mutableCopy.Description);
      return mutableCopy;
    }
 /// <summary>
 /// Rewrites the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual IStatement Rewrite(IAssumeStatement assumeStatement)
 {
     return assumeStatement;
 }
Ejemplo n.º 18
0
 public override void Visit(IAssumeStatement assumeStatement)
 {
     allElements.Add(new InvokInfo(Traverser, "IAssumeStatement", assumeStatement));
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Throws an exception when executed: IAssumeStatement nodes
 /// must be replaced before converting the Code Model to IL.
 /// </summary>
 public override void TraverseChildren(IAssumeStatement assumeStatement)
 {
     Contract.Assume(false, "IAssumeStatement nodes must be replaced before trying to convert the Code Model to IL.");
 }
Ejemplo n.º 20
0
 public virtual void onASTElement(IAssumeStatement assumeStatement)
 {
 }
Ejemplo n.º 21
0
 public void Visit(IAssumeStatement assumeStatement)
 {
     this.result = this.rewriter.Rewrite(assumeStatement);
 }
Ejemplo n.º 22
0
        public override void TraverseChildren(IAssumeStatement assumeStatement)
{ MethodEnter(assumeStatement);
            base.TraverseChildren(assumeStatement);
     MethodExit();   }
Ejemplo n.º 23
0
 /// <summary>
 /// Rewrites the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual IStatement Rewrite(IAssumeStatement assumeStatement)
 {
     var mutableAssumeStatement = assumeStatement as AssumeStatement;
       if (mutableAssumeStatement == null) return assumeStatement;
       this.RewriteChildren(mutableAssumeStatement);
       return mutableAssumeStatement;
 }
Ejemplo n.º 24
0
 /// <summary>
 /// Traverses the assume statement.
 /// </summary>
 public void Traverse(IAssumeStatement assumeStatement)
 {
     Contract.Requires(assumeStatement != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(assumeStatement);
       if (this.StopTraversal) return;
       this.TraverseChildren(assumeStatement);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(assumeStatement);
 }
Ejemplo n.º 25
0
 public virtual void onASTElement(IAssumeStatement assumeStatement) { }
Ejemplo n.º 26
0
 public void Visit(IAssumeStatement assumeStatement)
 {
     this.traverser.Traverse(assumeStatement);
 }
Ejemplo n.º 27
0
 /// <summary>
 /// Visits the specified assume statement.
 /// </summary>
 /// <param name="assumeStatement">The assume statement.</param>
 public override void Visit(IAssumeStatement assumeStatement)
 {
     AssumeStatement mutableAssumeStatement = assumeStatement as AssumeStatement;
     if (alwaysMakeACopy || mutableAssumeStatement == null) mutableAssumeStatement = new AssumeStatement(assumeStatement);
     this.resultStatement = this.myCodeMutator.Visit(mutableAssumeStatement);
 }
Ejemplo n.º 28
0
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public virtual void Visit(IAssumeStatement assumeStatement)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(assumeStatement);
       this.Visit(assumeStatement.Condition);
       if (assumeStatement.Description != null)
     this.Visit(assumeStatement.Description);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not to decrease this.path.Count.
       this.path.Pop();
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Returns a deep copy of the given assume statement.
 /// </summary>
 /// <param name="assumeStatement"></param>
 public AssumeStatement Copy(IAssumeStatement assumeStatement)
 {
     var mutableCopy = this.shallowCopier.Copy(assumeStatement);
       mutableCopy.Condition = this.Copy(mutableCopy.Condition);
       if (mutableCopy.Description != null)
     mutableCopy.Description = this.Copy(mutableCopy.Description);
       return mutableCopy;
 }
Ejemplo n.º 30
0
 public void Visit(IAssumeStatement assumeStatement)
 {
     throw new NotImplementedException();
 }
 public override void TraverseChildren(IAssumeStatement assumeStatement) {
   Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition);
   Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type);
   if (conditionType == this.sink.Heap.RefType) {
     conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef));
   }
   else if (conditionType == Bpl.Type.Int) {
     conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0));
   }
   else {
     System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool);
   }
   StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr));
 }
Ejemplo n.º 32
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="assumeStatement"></param>
 public AssumeStatement(IAssumeStatement assumeStatement)
   : base(assumeStatement) {
   this.condition = assumeStatement.Condition;
   this.description = assumeStatement.Description;
   this.conditionAsText = assumeStatement.OriginalSource;
 }
Ejemplo n.º 33
0
 /// <summary>
 /// Visits the specified assume statement.
 /// </summary>
 /// <param name="assumeStatement">The assume statement.</param>
 public override void Visit(IAssumeStatement assumeStatement)
 {
     AssumeStatement mutableAssumeStatement = new AssumeStatement(assumeStatement);
     this.resultStatement = this.myCodeCopier.DeepCopy(mutableAssumeStatement);
 }
Ejemplo n.º 34
0
 public override void TraverseChildren(IAssumeStatement assumeStatement)
 {
     MethodEnter(assumeStatement);
     base.TraverseChildren(assumeStatement);
     MethodExit();
 }
Ejemplo n.º 35
0
 /// <summary>
 /// Visits the specified assume statement.
 /// </summary>
 /// <param name="assumeStatement">The assume statement.</param>
 public override void Visit(IAssumeStatement assumeStatement)
 {
     AssumeStatement mutableAssumeStatement = assumeStatement as AssumeStatement;
     if (mutableAssumeStatement == null) {
       this.resultStatement = assumeStatement;
       return;
     }
     this.resultStatement = this.myCodeMutator.Visit(mutableAssumeStatement);
 }