예제 #1
0
파일: Xml.cs 프로젝트: CrystalMei/boogie
 private void WriteTokenAttributes(Cci.Node node)
 {
     Contract.Requires(node != null);
     Contract.Requires(wr != null && cce.IsPeerConsistent(wr));
     //modifies this.0, wr.*;
     Contract.Assert(wr != null);
     if (node.SourceContext.Document != null)
     {
         wr.WriteAttributeString("file", node.SourceContext.Document.Name);
         wr.WriteAttributeString("line", node.SourceContext.StartLine.ToString());
         wr.WriteAttributeString("column", node.SourceContext.StartColumn.ToString());
     }
 }
예제 #2
0
파일: Xml.cs 프로젝트: CrystalMei/boogie
 public void WriteError(string message, Cci.Node offendingNode, List <Block> trace)
 {
     Contract.Requires(offendingNode != null);
     Contract.Requires(message != null);
     Contract.Requires(IsOpen && cce.Owner.Different(this, offendingNode));
     Contract.Requires(trace == null || cce.Owner.Different(this, trace));
     //modifies this.*, offendingNode.*, trace.*;
     Contract.Ensures(IsOpen);
     Contract.Assert(wr != null);
     cce.BeginExpose(this);
     {
         wr.WriteStartElement("error");
         wr.WriteAttributeString("message", message);
         WriteTokenAttributes(offendingNode);
         if (trace != null)
         {
             wr.WriteStartElement("trace");
             {
                 foreach (object bo in trace)
                 {
                     cce.LoopInvariant(wr != null);
                     Contract.Assume(bo is Block);
                     Block b = (Block)bo;
                     wr.WriteStartElement("traceNode");
                     {
                         this.WriteTokenAttributes(b.tok);
                         wr.WriteAttributeString("label", b.Label);
                     }
                     wr.WriteEndElement();
                 }
                 wr.WriteEndElement();
             }
         }
         wr.WriteEndElement();
     }
     cce.EndExpose();
 }