Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by [EMAIL PROTECTED]

http://bugzilla.ximian.com/show_bug.cgi?id=76849

--- shadow/76849        2005-12-01 07:56:17.000000000 -0500
+++ shadow/76849.tmp.17816      2005-12-01 10:52:02.000000000 -0500
@@ -1,13 +1,13 @@
 Bug#: 76849
 Product: Mono: Compilers
 Version: 1.1
 OS: other
 OS Details: 
-Status: RESOLVED   
-Resolution: FIXED
+Status: REOPENED   
+Resolution: 
 Severity: Unknown
 Priority: Wishlist
 Component: C#
 AssignedTo: [EMAIL PROTECTED]                            
 ReportedBy: [EMAIL PROTECTED]               
 QAContact: [EMAIL PROTECTED]
@@ -101,6 +101,91 @@
                }
        }
 
 
 ------- Additional Comments From [EMAIL PROTECTED]  2005-12-01 07:56 -------
 Fixed in SVN.
+
+------- Additional Comments From [EMAIL PROTECTED]  2005-12-01 10:52 -------
+We're getting closer.  One remaining issue that I can see: use of
+constants within an Obsolete class in a DllImport statement should be
+permissible, e.g. 
+
+       class Stdlib {
+               internal const string LIBC = "msvcrt.dll";
+               [DllImport (LIBC)]
+               public static extern IntPtr fopen (string s, string m);
+       }
+
+Here's a more complete example which works on CSC and fails with mcs:
+
+       using System;
+       using System.Runtime.InteropServices;
+
+       [Obsolete ("Use Errno", true)]
+       public enum Error {
+               EROFS,
+               ERANGE
+       }
+
+       [Obsolete ("Use Native.FilePosition", true)]
+       public class FilePosition {}
+
+       public class StdioFileStream {
+               [Obsolete ("", true)]
+               public void SaveFilePosition (FilePosition fpos)
+               {
+               }
+       }
+
+       [Obsolete ("Use Native.Dirent", true)]
+       public sealed class Dirent {
+               public string d_name;
+       }
+
+       [Obsolete ("Use Native.Stdlib", true)]
+       public class Stdlib {
+               internal const string LIBC = "msvcrt.dll";
+               [DllImport (LIBC)]
+                       public static extern IntPtr signal (int signum, IntPtr 
handler);
+       }
+
+       [Obsolete ("Use Native.Syscall", true)]
+       public class Syscall : Stdlib {
+               public static Dirent readdir (IntPtr dir)
+               {
+                       return new Dirent ();
+               }
+       }
+
+       public class NativeConvert {
+               [DllImport ("foo")]
+               [Obsolete ("", true)]
+                       private static extern int FromError (Error value, out 
Int32 rval);
+       }
+
+       public sealed class UnixMarshal {
+               [Obsolete ("Use Errno", true)]
+               public static string GetDescription (Error e)
+               {
+                       return null;
+               }
+       }
+
+       public sealed class UnixDirectoryInfo {
+               [Obsolete ("Use GetEntriesEx", true)]
+               public static Dirent[] GetEntries ()
+               {
+                       Dirent[] dirs = new Dirent[]{
+                               Syscall.readdir (IntPtr.Zero)
+                       };
+                       return dirs;
+               }
+       }
+
+       class Test {
+               public static void Main ()
+               {
+               }
+       }
+
+
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to