2007-09-05 Marek Safar <marek.safar@gmail.com>
authorMarek Safar <marek.safar@gmail.com>
Wed, 5 Sep 2007 09:19:08 +0000 (09:19 -0000)
committerMarek Safar <marek.safar@gmail.com>
Wed, 5 Sep 2007 09:19:08 +0000 (09:19 -0000)
A fix for bug #82676
* convert.cs (ImplicitReferenceConversionCore): From any class-type S to
any interface-type T means to any of interface type T.

svn path=/trunk/mcs/; revision=85337

mcs/mcs/ChangeLog
mcs/mcs/convert.cs

index b48ca67a0d8039a34c7c4d81ec573c1372d4d82c..f1c8badf71a1d2a4bfa0cfe5b40466abf8270177 100644 (file)
@@ -1,3 +1,9 @@
+2007-09-05  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #82676
+       * convert.cs (ImplicitReferenceConversionCore): From any class-type S to
+       any interface-type T means to any of interface type T.
+
 2007-09-04  Marek Safar  <marek.safar@gmail.com>
 
        * namespace.cs: We have 2 versions of System.Core assembly.
index a0baac88b0a5c1125abc5f667674b847e376c062..c0911770646f2e41ab0e4178f3ee99302ff67042 100644 (file)
@@ -349,6 +349,13 @@ namespace Mono.CSharp {
                                        return !TypeManager.IsGenericParameter (expr_type) &&
                                                !TypeManager.IsValueType (expr_type);
                                }
+                               
+                               if (!TypeManager.IsGenericType (target_type)) {
+                                       foreach (Type iface in TypeManager.GetInterfaces (target_type)) {
+                                               if (TypeManager.ImplementsInterface (expr_type, iface))
+                                                       return true;
+                                       }
+                               }
                        }
 
                        // from any interface type S to interface-type T.