diff --git a/Microsoft.Research/Contracts/MsCorlib/System.IO.Directory.cs b/Microsoft.Research/Contracts/MsCorlib/System.IO.Directory.cs index cd6b0b49..31a4defa 100644 --- a/Microsoft.Research/Contracts/MsCorlib/System.IO.Directory.cs +++ b/Microsoft.Research/Contracts/MsCorlib/System.IO.Directory.cs @@ -18,7 +18,7 @@ namespace System.IO { -#if !SILVERLIGHT_4_0_WP +#if !SILVERLIGHT_3_0 // Summary: // Specifies whether to search the current directory, or the current directory // and all subdirectories. @@ -91,7 +91,21 @@ public static String[] GetLogicalDrives() } #endif -#if !SILVERLIGHT_4_0 && !SILVERLIGHT_5_0 +#if !SILVERLIGHT + public static String[] GetFileSystemEntries(string path, string searchPattern, SearchOption searchOption) + { + Contract.Requires(!String.IsNullOrEmpty(path)); + Contract.Requires(searchPattern != null); + Contract.Requires(searchOption == SearchOption.AllDirectories || searchOption == SearchOption.TopDirectoryOnly); + Contract.Ensures(Contract.Result() != null); + Contract.Ensures(Contract.ForAll(Contract.Result(), file => file != null)); + Contract.EnsuresOnThrow(true, @"path is a file name."); + Contract.EnsuresOnThrow(true, @"The specified path, file name, or both exceed the system-defined maximum length."); + Contract.EnsuresOnThrow(true, @"The specified path is invalid (for example, it is on an unmapped drive."); + + return default(String[]); + } +#endif public static String[] GetFileSystemEntries(string path, string searchPattern) { Contract.Requires(!String.IsNullOrEmpty(path)); @@ -116,6 +130,21 @@ public static String[] GetFileSystemEntries(string path) return default(String[]); } +#if !SILVERLIGHT + public static String[] GetDirectories(string path, string searchPattern, SearchOption searchOption) + { + Contract.Requires(!String.IsNullOrEmpty(path)); + Contract.Requires(searchPattern != null); + Contract.Requires(searchOption == SearchOption.AllDirectories || searchOption == SearchOption.TopDirectoryOnly); + Contract.Ensures(Contract.Result() != null); + Contract.Ensures(Contract.ForAll(Contract.Result(), dir => dir != null)); + Contract.EnsuresOnThrow(true, @"path is a file name."); + Contract.EnsuresOnThrow(true, @"The specified path, file name, or both exceed the system-defined maximum length."); + Contract.EnsuresOnThrow(true, @"The specified path is invalid (for example, it is on an unmapped drive."); + + return default(String[]); + } +#endif public static String[] GetDirectories(string path, string searchPattern) { Contract.Requires(!String.IsNullOrEmpty(path)); @@ -139,6 +168,21 @@ public static String[] GetDirectories(string path) return default(String[]); } +#if !SILVERLIGHT + public static String[] GetFiles(string path, string searchPattern, SearchOption searchOption) + { + Contract.Requires(!String.IsNullOrEmpty(path)); + Contract.Requires(searchPattern != null); + Contract.Requires(searchOption == SearchOption.AllDirectories || searchOption == SearchOption.TopDirectoryOnly); + Contract.Ensures(Contract.Result() != null); + Contract.Ensures(Contract.ForAll(Contract.Result(), file => file != null)); + Contract.EnsuresOnThrow(true, @"path is a file name."); + Contract.EnsuresOnThrow(true, @"The specified path, file name, or both exceed the system-defined maximum length."); + Contract.EnsuresOnThrow(true, @"The specified path is invalid (for example, it is on an unmapped drive."); + + return default(String[]); + } +#endif public static String[] GetFiles(string path, string searchPattern) { Contract.Requires(!String.IsNullOrEmpty(path)); @@ -161,7 +205,6 @@ public static String[] GetFiles(string path) Contract.EnsuresOnThrow(true, @"The specified path is invalid (for example, it is on an unmapped drive."); return default(String[]); } -#endif #if !SILVERLIGHT public static DateTime GetLastAccessTimeUtc(string path)