diff --git a/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj b/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj index 9055a5be..9eb9f5b4 100644 --- a/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj +++ b/Microsoft.Research/Contracts/MsCorlib/MsCorlib.Contracts10.csproj @@ -351,7 +351,6 @@ - @@ -905,7 +904,7 @@ Include="System.Security.Principal.WindowsPrincipal.cs" /> --> - + diff --git a/Microsoft.Research/Contracts/MsCorlib/System.Version.cs b/Microsoft.Research/Contracts/MsCorlib/System.Version.cs index 5ea6b5a1..8ce66633 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.Version.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.Version.cs @@ -22,24 +22,58 @@ namespace System public class Version: ICloneable, IComparable { + [Pure] public int Minor { - get { return default(int); } + get { + Contract.Ensures(Contract.Result() >= 0); + return default(int); + } } + [Pure] public int Major { - get { return default(int); } + get { + Contract.Ensures(Contract.Result() >= 0); + return default(int); + } } + [Pure] public int Revision { - get { return default(int); } + get { + Contract.Ensures(Contract.Result() >= -1); + return default(int); + } } + [Pure] public int Build { - get { return default(int); } + get { + Contract.Ensures(Contract.Result() >= -1); + return default(int); + } + } + + [Pure] + public short MajorRevision + { + get { + Contract.Ensures(Contract.Result() >= -1); + return default(short); + } + } + + [Pure] + public short MinorRevision + { + get { + Contract.Ensures(Contract.Result() >= -1); + return default(short); + } } [Pure][Reads(ReadsAttribute.Reads.Nothing)] @@ -85,9 +119,27 @@ public object Clone () { return default(object); } +#if SILVERLIGHT || NETFRAMEWORK_4_0 + [Pure] + public static Version Parse(string input) { + Contract.Requires(input != null); + Contract.Ensures(Contract.Result() != null); + return default(Version); + } + [Pure] + public static bool TryParse(string input, out Version result) { + Contract.Requires(input != null); + Contract.Ensures(!Contract.Result() || Contract.ValueAtReturn(out result) != null); + result = default(Version); + return default(bool); + } +#endif #if !SILVERLIGHT public Version () { - + Contract.Ensures(Major == 0); + Contract.Ensures(Minor == 0); + Contract.Ensures(Build == -1); + Contract.Ensures(Revision == -1); } #endif public Version (string version) { @@ -97,12 +149,20 @@ public Version (string version) { public Version (int major, int minor) { Contract.Requires(major >= 0); Contract.Requires(minor >= 0); + Contract.Ensures(Major == major); + Contract.Ensures(Minor == minor); + Contract.Ensures(Build == -1); + Contract.Ensures(Revision == -1); } public Version (int major, int minor, int build) { Contract.Requires(major >= 0); Contract.Requires(minor >= 0); Contract.Requires(build >= 0); + Contract.Ensures(Major == major); + Contract.Ensures(Minor == minor); + Contract.Ensures(Build == build); + Contract.Ensures(Revision == -1); } public Version (int major, int minor, int build, int revision) { @@ -110,6 +170,11 @@ public Version (int major, int minor, int build, int revision) { Contract.Requires(minor >= 0); Contract.Requires(build >= 0); Contract.Requires(revision >= 0); + Contract.Ensures(Major == major); + Contract.Ensures(Minor == minor); + Contract.Ensures(Build == build); + Contract.Ensures(Revision == revision); + } } }