Ejemplo n.º 1
0
 private Literal TranslateKindForBackwardCompatibility(ContractFailureKind kind)
 {
   switch (kind)
   {
     case ContractFailureKind.Assert:
       {
         var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Assert"));
         Contract.Assume(field != null);
         return field.DefaultValue;
       }
     case ContractFailureKind.Assume:
       {
         var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Assume"));
         Contract.Assume(field != null);
         return field.DefaultValue;
       }
     case ContractFailureKind.Invariant:
       {
         var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Invariant"));
         Contract.Assume(field != null);
         return field.DefaultValue;
       }
     case ContractFailureKind.Postcondition:
       {
         var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Postcondition"));
         Contract.Assume(field != null);
         return field.DefaultValue;
       }
     case ContractFailureKind.PostconditionOnException:
       {
         var pe = this.contractNodes.ContractFailureKind.GetField(Identifier.For("PostconditionOnException"));
         // hack
         if (pe == null)
         { // Old CLR 4.0 beta
           var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Postcondition"));
           Contract.Assume(field != null);
           return field.DefaultValue;
         }
         return pe.DefaultValue;
       }
     case ContractFailureKind.Precondition:
       {
         var field = this.contractNodes.ContractFailureKind.GetField(Identifier.For("Precondition"));
         Contract.Assume(field != null);
         return field.DefaultValue;
       }
     default:
       {
         throw new ApplicationException(String.Format("Unexpected failure kind {0}", kind.ToString()));
       }
   }
 }