I've got this code:
public class MyCollection : ICollection<string>
{
private readonly ICollection<string> _inner = new Collection<string>();
public void Add(string item)
{
_inner.Add(item);
} // <-- CodeContracts: ensures unproven: this.Count >= Contract.OldValue(this.Count)
public void Clear()
{
_inner.Clear();
} // <-- CodeContracts: ensures unproven: this.Count == 0
public bool Contains(string item)
{
return _inner.Contains(item); // <-- CodeContracts: ensures unproven: !Contract.Result<bool>() || this.Count > 0
}
public void CopyTo(string[] array, int arrayIndex)
{
_inner.CopyTo(array, arrayIndex); // <-- CodeContracts: requires unproven: arrayIndex + this.Count <= array.Length
}
public IEnumerator<string> GetEnumerator()
{
return _inner.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public bool Remove(string item)
{
return _inner.Remove(item);
}
public int Count
{
get { return _inner.Count; }
}
public bool IsReadOnly
{
get { return _inner.IsReadOnly; }
}
}
I get these warnings:
- Add: CodeContracts: ensures unproven:
this.Count >= Contract.OldValue(this.Count)
- Clear: CodeContracts: ensures unproven:
this.Count == 0
- Contains: CodeContracts: ensures unproven:
!Contract.Result<bool>() || this.Count > 0
- CopyTo: CodeContracts: requires unproven:
arrayIndex + this.Count <= array.Length
How do I fix these? Is there some way to just suppress these?