/// This is used by the unary_expression code to resolve
/// a name against a parameter.
/// </summary>
+
+ // FIXME: This is very ugly and it's very hard to reset it correctly
+ // on all places, especially when some parameters are autogenerated.
Parameters current_local_parameters;
/// <summary>
current_local_parameters = new Parameters (args);
lexer.EventParsing = false;
}
- block
+ block
{
$$ = new Accessor ((ToplevelBlock) $4, 0, (Attributes) $1, (Location) $2);
lexer.EventParsing = true;
+ current_local_parameters = null;
}
| opt_attributes REMOVE error {
Report.Error (73, (Location) $2, "An add or remove accessor must have a body");
public static readonly SimpleAnonymousHost Simple = new SimpleAnonymousHost ();
bool yields;
- ArrayList anonymous_methods;
public static SimpleAnonymousHost GetSimple () {
Simple.yields = false;
- Simple.anonymous_methods = null;
return Simple;
}
{
yields = true;
}
-
- public void AddAnonymousMethod (AnonymousMethodExpression anonymous)
- {
- if (anonymous_methods == null)
- anonymous_methods = new ArrayList ();
- anonymous_methods.Add (anonymous);
- }
-
+
public void Propagate (IAnonymousHost real_host)
{
if (yields)
real_host.SetYields ();
- if (anonymous_methods != null) {
- foreach (AnonymousMethodExpression ame in anonymous_methods)
- real_host.AddAnonymousMethod (ame);
- }
}
}
current_local_parameters = parameters;
- ToplevelBlock top_current_block = current_block == null ? null : current_block.Toplevel;
-
current_anonymous_method = lambda
- ? new LambdaExpression (
- current_anonymous_method, current_generic_method, current_container,
- parameters, top_current_block, loc)
- : new AnonymousMethodExpression (
- current_anonymous_method, current_generic_method, current_container,
- parameters, top_current_block, loc);
+ ? new LambdaExpression (current_container, parameters, loc)
+ : new AnonymousMethodExpression (current_container, parameters, loc);
// Force the next block to be created as a ToplevelBlock
parsing_anonymous_method = true;
* Completes the anonymous method processing, if lambda_expr is null, this
* means that we have a Statement instead of an Expression embedded
*/
-AnonymousMethodExpression
-end_anonymous (ToplevelBlock anon_block, Location loc)
+AnonymousMethodExpression end_anonymous (ToplevelBlock anon_block, Location loc)
{
AnonymousMethodExpression retval;
retval = null;
} else {
current_anonymous_method.Block = anon_block;
- if ((anonymous_host != null) && (current_anonymous_method.Parent == null))
- anonymous_host.AddAnonymousMethod (current_anonymous_method);
-
retval = current_anonymous_method;
}