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

List:       mono-patches
Subject:    [Mono-patches] mcs/mbas ChangeLog,1.210,1.211 expression.cs,1.60,1.61 ecore.cs,1.38,1.39
From:       anirban () mono-cvs ! ximian ! com (B Anirban <banirban () novell ! com>)
Date:       2004-09-30 12:33:28
Message-ID: 20040930123328.B64EA94762 () mono-cvs ! ximian ! com
[Download RAW message or body]

Update of /cvs/public/mcs/mbas
In directory mono-cvs.ximian.com:/tmp/cvs-serv31579

Modified Files:
	ChangeLog expression.cs ecore.cs 
Log Message:
2004-09-30 Anirban Bhattacharjee <banirban@novell.com>
        * expression.cs:
        * ecore.cs:
                Fix for resolution of event expression
                when we have a AddHandler statement
                like
                AddHandler Me.E, AddressOf Me.EH
                Submitted by Raja Harinath<rharinath@novell.com>


Index: ChangeLog
===================================================================
RCS file: /cvs/public/mcs/mbas/ChangeLog,v
retrieving revision 1.210
retrieving revision 1.211
diff -u -d -r1.210 -r1.211
--- ChangeLog	30 Sep 2004 12:12:18 -0000	1.210
+++ ChangeLog	30 Sep 2004 12:33:26 -0000	1.211
@@ -1,4 +1,13 @@
 2004-09-30 Anirban Bhattacharjee <banirban@novell.com>
+	* expression.cs:
+	* ecore.cs:
+		Fix for resolution of event expression 
+		when we have a AddHandler statement 
+		like 
+		AddHandler Me.E, AddressOf Me.EH
+		Submitted by Raja Harinath<rharinath@novell.com>
+
+2004-09-30 Anirban Bhattacharjee <banirban@novell.com>
 	* mb-parser.jay: Unnecessary to and fro conversion of types
 			is removed from AddHandler function
 

Index: expression.cs
===================================================================
RCS file: /cvs/public/mcs/mbas/expression.cs,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- expression.cs	23 Sep 2004 12:31:15 -0000	1.60
+++ expression.cs	30 Sep 2004 12:33:26 -0000	1.61
@@ -5732,38 +5732,6 @@
 				}
 			}
 
-			if (member_lookup is EventExpr) {
-
-				EventExpr ee = (EventExpr) member_lookup;
-				
-				//
-				// If the event is local to this class, we transform ourselves into
-				// a FieldExpr
-				//
-
-				if (ee.EventInfo.DeclaringType == ec.ContainerType) {
-					MemberInfo mi = GetFieldFromEvent (ee);
-
-					if (mi == null) {
-						//
-						// If this happens, then we have an event with its own
-						// accessors and private field etc so there's no need
-						// to transform ourselves : we should instead flag an error
-						//
-						Assign.error70 (ee.EventInfo, loc);
-						return null;
-					}
-
-					Expression ml = ExprClassFromMemberInfo (ec, mi, loc);
-					
-					if (ml == null) {
-						Report.Error (-200, loc, "Internal error!!");
-						return null;
-					}
-					
-					return ResolveMemberAccess (ec, ml, left, loc, left_original);
-				}
-			}
 			
 			if (member_lookup is IMemberExpr) {
 				IMemberExpr me = (IMemberExpr) member_lookup;
@@ -5843,7 +5811,7 @@
 
 			Expression original = expr;
 			expr = expr.Resolve (ec, flags | ResolveFlags.DisableFlowAnalysis);
-
+			
 			if (expr == null)
 				return null;
 
@@ -6809,7 +6777,7 @@
 			
 			e = MemberAccess.ResolveMemberAccess (ec, member_lookup, left, loc, null);
 
-			if (e is PropertyExpr){
+			if (e is PropertyExpr) {
 				PropertyExpr pe = (PropertyExpr) e;
 
 				pe.IsBase = true;

Index: ecore.cs
===================================================================
RCS file: /cvs/public/mcs/mbas/ecore.cs,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- ecore.cs	7 Sep 2004 18:04:33 -0000	1.38
+++ ecore.cs	30 Sep 2004 12:33:26 -0000	1.39
@@ -4790,6 +4790,8 @@
 			}
 		}
 
+		Expression field_expr = null;
+
 		public override Expression DoResolve (EmitContext ec)
 		{
 			if (instance_expr != null) {
@@ -4798,12 +4800,20 @@
 					return null;
 			}
 
+			MemberInfo mi = GetFieldFromEvent (this);
+			if (mi == null)
+					return null;
+			field_expr = ExprClassFromMemberInfo (ec, mi, loc);
+			((FieldExpr) field_expr).InstanceExpression = instance_expr;
+			field_expr = field_expr.DoResolve (ec);
+			if (field_expr == null)
+					return null;
 			return this;
 		}
 
 		public override void Emit (EmitContext ec)
 		{
-			Report.Error (70, loc, "The event '" + Name + "' can only appear on the left hand \
side of += or -= (except on the defining type)"); +			field_expr.Emit (ec);
 		}
 
 		public void EmitAddOrRemove (EmitContext ec, Expression source)

_______________________________________________
Mono-patches maillist  -  Mono-patches@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