[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mono-patches
Subject:    [Mono-patches] r67185 - trunk/mcs/mcs
From:       "Marek Safar (marek.safar () seznam ! cz)"
Date:       2006-10-31 20:12:25
Message-ID: 20061031201225.CF6919472C () mono-cvs ! ximian ! com
[Download RAW message or body]

Author: marek
Date: 2006-10-31 15:12:25 -0500 (Tue, 31 Oct 2006)
New Revision: 67185

Modified:
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/report.cs
   trunk/mcs/mcs/statement.cs
   trunk/mcs/mcs/typemanager.cs
Log:
2006-10-31  Marek Safar  <marek.safar@gmail.com>

	A fix for bug #67689
	statement.cs.cs (CollectionForeach.TryType): Issue a warning when
	GetEnumerator is ambiguous.

	* report.cs: Add new warning.


Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog	2006-10-31 19:05:59 UTC (rev 67184)
+++ trunk/mcs/mcs/ChangeLog	2006-10-31 20:12:25 UTC (rev 67185)
@@ -1,3 +1,11 @@
+2006-10-31  Marek Safar  <marek.safar@gmail.com>
+
+	A fix for bug #67689
+	statement.cs.cs (CollectionForeach.TryType): Issue a warning when
+	GetEnumerator is ambiguous.
+
+	* report.cs: Add new warning.
+
 2006-10-29  Marek Safar  <marek.safar@gmail.com>
 
 	A fix for bug #78602

Modified: trunk/mcs/mcs/report.cs
===================================================================
--- trunk/mcs/mcs/report.cs	2006-10-31 19:05:59 UTC (rev 67184)
+++ trunk/mcs/mcs/report.cs	2006-10-31 20:12:25 UTC (rev 67185)
@@ -75,7 +75,7 @@
 		public static readonly int[] AllWarnings = new int[] {
 			28, 67, 78,
 			105, 108, 109, 114, 162, 164, 168, 169, 183, 184, 197,
-			219, 251, 252, 253, 282,
+			219, 251, 252, 253, 278, 282,
 			419, 420, 429, 436, 440, 465, 467, 469,
 			612, 618, 626, 628, 642, 649, 652, 658, 659, 660, 661, 665, 672, 675,
 			1030, 1058,

Modified: trunk/mcs/mcs/statement.cs
===================================================================
--- trunk/mcs/mcs/statement.cs	2006-10-31 19:05:59 UTC (rev 67184)
+++ trunk/mcs/mcs/statement.cs	2006-10-31 20:12:25 UTC (rev 67185)
@@ -4920,6 +4920,12 @@
 					if (!GetEnumeratorFilter (ec, mi))
 						continue;
 
+					if (result != null) {
+						Report.SymbolRelatedToPreviousError (result);
+						Report.SymbolRelatedToPreviousError (mi);
+						Report.Warning (278, 2, loc, "`{0}' contains ambiguous implementation of `{1}' \
pattern. Method `{2}' is ambiguous with method `{3}'", +							TypeManager.CSharpName \
(t), "enumerable", TypeManager.CSharpSignature (result), TypeManager.CSharpSignature \
(mi)); +					}
 					result = mi;
 					tmp_move_next = move_next;
 					tmp_get_cur = get_current;

Modified: trunk/mcs/mcs/typemanager.cs
===================================================================
--- trunk/mcs/mcs/typemanager.cs	2006-10-31 19:05:59 UTC (rev 67184)
+++ trunk/mcs/mcs/typemanager.cs	2006-10-31 20:12:25 UTC (rev 67185)
@@ -31,7 +31,7 @@
 
 namespace Mono.CSharp {
 
-public partial class TypeManager {
+public /*partial*/ class TypeManager {
 	//
 	// A list of core types that the compiler requires or uses
 	//
@@ -437,6 +437,11 @@
 
 	public static MemberCache LookupMemberCache (Type t)
 	{
+#if GMCS_SOURCE && MS_COMPATIBLE
+        if (t.IsGenericType && !t.IsGenericTypeDefinition)
+            t = t.GetGenericTypeDefinition ();
+#endif
+
 		if (t is TypeBuilder) {
 			IMemberContainer container = builder_to_declspace [t] as IMemberContainer;
 			if (container != null)
@@ -1340,7 +1345,7 @@
 					      MemberFilter filter, object criteria)
 	{
 #if MS_COMPATIBLE && GMCS_SOURCE
-		if (t.IsGenericType)
+		if (t.IsGenericType && !t.IsGenericTypeDefinition)
 			t = t.GetGenericTypeDefinition ();
 #endif
 
@@ -1430,6 +1435,11 @@
 	{
 		MemberCache cache;
 
+#if GMCS_SOURCE && MS_COMPATIBLE
+        if (t.IsGenericType && !t.IsGenericTypeDefinition)
+            t = t.GetGenericTypeDefinition();
+#endif
+
 		//
 		// If this is a dynamic type, it's always in the `builder_to_declspace' hash table
 		// and we can ask the DeclSpace for the MemberCache.
@@ -1465,7 +1475,7 @@
 		// a TypeBuilder array will return a Type, not a TypeBuilder,
 		// and we can not call FindMembers on this type.
 		//
-		if (t == TypeManager.array_type || t.IsSubclassOf (TypeManager.array_type)) {
+		if (t.IsArray) { //  == TypeManager.array_type || t.IsSubclassOf \
(TypeManager.array_type)) {  used_cache = true;
 			return TypeHandle.ArrayType.MemberCache.FindMembers (
 				mt, bf, name, FilterWithClosure_delegate, null);
@@ -1552,7 +1562,7 @@
 			return true;
 
 #if MS_COMPATIBLE && GMCS_SOURCE
-		if (t.IsGenericParameter)
+		if (t.IsGenericParameter || t.IsGenericType)
 			return false;
 #endif
 		return t.IsEnum;
@@ -2790,6 +2800,10 @@
 		BindingFlags bf = BindingFlags.Public | BindingFlags.NonPublic |
 			BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
 
+#if MS_COMPATIBLE
+        return m;
+#endif
+
 		if (m is ConstructorInfo) {
 			foreach (ConstructorInfo c in t.GetConstructors (bf))
 				if (c.MetadataToken == m.MetadataToken)

_______________________________________________
Mono-patches maillist  -  Mono-patches@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-patches


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic