Set build-in types modifiers
authorMarek Safar <marek.safar@gmail.com>
Tue, 4 Jan 2011 22:31:34 +0000 (22:31 +0000)
committerMarek Safar <marek.safar@gmail.com>
Wed, 5 Jan 2011 07:33:27 +0000 (07:33 +0000)
mcs/errors/cs0030-11.cs [new file with mode: 0644]
mcs/mcs/import.cs
mcs/mcs/typespec.cs

diff --git a/mcs/errors/cs0030-11.cs b/mcs/errors/cs0030-11.cs
new file mode 100644 (file)
index 0000000..4a8d1fd
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0030: Cannot convert type `string' to `IA'
+// Line: 13
+
+interface IA
+{
+}
+
+class MainClass
+{
+       public static void Main ()
+       {
+               string s = "s";
+               IA i = (IA) s;
+       }
+}
index 33c87732d8ac54fdc380efee768f1b57871f15cb..23835c98b1a1ab84b71f8acb0b27fc6de4a202ca 100644 (file)
@@ -790,7 +790,7 @@ namespace Mono.CSharp
 
                        } else if (buildin_types.TryGetValue (type, out pt)) {
                                spec = pt;
-                               pt.SetDefinition (definition, type);
+                               pt.SetDefinition (definition, type, mod);
                        }
 
                        if (spec == null)
index 67fc8b825bf8c9b18f130a45274af5517ee4db2f..33cc5b5e7375f18877930d9cb814740ff1e3dad8 100644 (file)
@@ -497,9 +497,6 @@ namespace Mono.CSharp
                public BuildinTypeSpec (MemberKind kind, string ns, string name, Type buildinKind)
                        : base (kind, null, null, null, Modifiers.PUBLIC)
                {
-                       if (kind == MemberKind.Struct)
-                               modifiers |= Modifiers.SEALED;
-
                        this.type = buildinKind;
                        this.ns = ns;
                        this.name = name;
@@ -573,10 +570,11 @@ namespace Mono.CSharp
                        return FullName;
                }
 
-               public void SetDefinition (ITypeDefinition td, MetaType type)
+               public void SetDefinition (ITypeDefinition td, MetaType type, Modifiers mod)
                {
                        this.definition = td;
                        this.info = type;
+                       this.modifiers |= (mod & ~Modifiers.AccessibilityMask);
                }
 
                public void SetDefinition (TypeSpec ts)
@@ -585,6 +583,7 @@ namespace Mono.CSharp
                        this.info = ts.GetMetaInfo ();
                        this.BaseType = ts.BaseType;
                        this.Interfaces = ts.Interfaces;
+                       this.modifiers = ts.Modifiers;
                }
        }