Author: marek
Date: 2008-02-08 08:36:44 -0500 (Fri, 08 Feb 2008)
New Revision: 95240
Modified:
trunk/mcs/mcs/ChangeLog
trunk/mcs/mcs/ecore.cs
trunk/mcs/mcs/expression.cs
Log:
2008-02-08 Marek Safar <[EMAIL PROTECTED]>
A fix for bugs #325134, #359749
* expression.cs, ecore.cs: Try to resolve an extension method even if
the
first bind points to non-method member expression.
Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog 2008-02-08 13:34:51 UTC (rev 95239)
+++ trunk/mcs/mcs/ChangeLog 2008-02-08 13:36:44 UTC (rev 95240)
@@ -1,5 +1,11 @@
2008-02-08 Marek Safar <[EMAIL PROTECTED]>
+ A fix for bugs #325134, #359749
+ * expression.cs, ecore.cs: Try to resolve an extension method even if
the
+ first binds point to non-method member expression.
+
+2008-02-08 Marek Safar <[EMAIL PROTECTED]>
+
* cs-parser.jay: Null coalescing operator is not part of ISO-1.
2008-02-08 Marek Safar <[EMAIL PROTECTED]>
Modified: trunk/mcs/mcs/ecore.cs
===================================================================
--- trunk/mcs/mcs/ecore.cs 2008-02-08 13:34:51 UTC (rev 95239)
+++ trunk/mcs/mcs/ecore.cs 2008-02-08 13:36:44 UTC (rev 95240)
@@ -2448,7 +2448,7 @@
if (!me.IsStatic &&
(!intermediate ||
!IdenticalNameAndTypeName (ec, me, loc))) {
Error_ObjectRefRequired
(ec, loc, me.GetSignatureForError ());
- return
EmptyExpression.Null;
+ return null;
}
//
Modified: trunk/mcs/mcs/expression.cs
===================================================================
--- trunk/mcs/mcs/expression.cs 2008-02-08 13:34:51 UTC (rev 95239)
+++ trunk/mcs/mcs/expression.cs 2008-02-08 13:36:44 UTC (rev 95240)
@@ -4325,9 +4325,21 @@
return (new DelegateInvocation (
expr_resolved, Arguments,
loc)).Resolve (ec);
}
+
+ MemberExpr me = expr_resolved as MemberExpr;
+ if (me == null) {
+ expr_resolved.Error_UnexpectedKind
(ResolveFlags.MethodGroup, loc);
+ return null;
+ }
- expr_resolved.Error_UnexpectedKind
(ResolveFlags.MethodGroup, loc);
- return null;
+ mg = ec.TypeContainer.LookupExtensionMethod
(me.Type, me.Name);
+ if (mg == null) {
+ Report.Error (1955, loc, "The member
`{0}' cannot be used as method or delegate",
+
expr_resolved.GetSignatureForError ());
+ return null;
+ }
+
+
((ExtensionMethodGroupExpr)mg).ExtensionExpression = me.InstanceExpression;
}
//
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches