Browse Source

2005-10-23 Marek Safar <[email protected]>

	* anonymous.cs (AnonymousContainer): Don't crash when container
	doesn't exist.

svn path=/trunk/mcs/; revision=52089
Marek Safar 20 years ago
parent
commit
6af0ef2402
2 changed files with 11 additions and 10 deletions
  1. 5 0
      mcs/mcs/ChangeLog
  2. 6 10
      mcs/mcs/anonymous.cs

+ 5 - 0
mcs/mcs/ChangeLog

@@ -1,3 +1,8 @@
+2005-10-23  Marek Safar  <[email protected]>
+
+	* anonymous.cs (AnonymousContainer): Don't crash when container
+	doesn't exist.
+
 2005-10-23  Marek Safar  <[email protected]>
 
 	* expression.cs (Binary.DoResolve): Warn when comparing same

+ 6 - 10
mcs/mcs/anonymous.cs

@@ -77,22 +77,18 @@ namespace Mono.CSharp {
 			//
 			// The order is important: this setups the CaptureContext tree hierarchy.
 			//
+			if (container == null) {
+				Report.Error (1706, l, "Anonymous methods are not allowed in attribute declaration");
+				return;
+			}
 			container.SetHaveAnonymousMethods (l, this);
 			block.SetHaveAnonymousMethods (l, this);
 		}
 
 		protected AnonymousContainer (Parameters parameters, ToplevelBlock container,
-					      Location l)
+					      Location l):
+			this (parameters, container, new ToplevelBlock (container, parameters, l), l)
 		{
-			Parameters = parameters;
-			Block = new ToplevelBlock (container, Parameters, l);
-			loc = l;
-
-			//
-			// The order is important: this setups the CaptureContext tree hierarchy.
-			//
-			container.SetHaveAnonymousMethods (loc, this);
-			Block.SetHaveAnonymousMethods (loc, this);
 		}
 
 		public override Expression DoResolve (EmitContext ec)