/* * 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 (ParametersBlock anon_block) { AnonymousMethodExpression retval; if (async_block) anon_block.IsAsync = true; current_anonymous_method.Block = anon_block; retval = current_anonymous_method; async_block = (bool) oob_stack.Pop (); current_variable = (BlockVariable) oob_stack.Pop (); current_local_parameters = (ParametersCompiled) oob_stack.Pop (); current_anonymous_method = (AnonymousMethodExpression) oob_stack.Pop (); return retval; }
public override object Visit(ICSharpCode.NRefactory.MonoCSharp.AnonymousMethodExpression anonymousMethodExpression) { var result = new AnonymousMethodExpression(); var location = LocationsBag.GetLocations(anonymousMethodExpression); int l = 0; if (anonymousMethodExpression.IsAsync) { result.IsAsync = true; result.AddChild(new CSharpTokenNode(Convert(location [l++]), AnonymousMethodExpression.AsyncModifierRole), AnonymousMethodExpression.AsyncModifierRole); } if (location != null) { result.AddChild(new CSharpTokenNode(Convert(location [l++]), AnonymousMethodExpression.DelegateKeywordRole), AnonymousMethodExpression.DelegateKeywordRole); if (location.Count > l) { result.HasParameterList = true; result.AddChild(new CSharpTokenNode(Convert(location [l++]), Roles.LPar), Roles.LPar); AddParameter(result, anonymousMethodExpression.Parameters); result.AddChild(new CSharpTokenNode(Convert(location [l++]), Roles.RPar), Roles.RPar); } } if (anonymousMethodExpression.Block != null) result.AddChild((BlockStatement)anonymousMethodExpression.Block.Accept(this), Roles.Body); return result; }
void start_anonymous (bool isLambda, ParametersCompiled parameters, bool isAsync, Location loc) { oob_stack.Push (current_anonymous_method); oob_stack.Push (current_local_parameters); oob_stack.Push (current_variable); oob_stack.Push (async_block); current_local_parameters = parameters; if (isLambda) { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (loc, "lambda expressions"); current_anonymous_method = new LambdaExpression (loc); } else { if (lang_version == LanguageVersion.ISO_1) FeatureIsNotAvailable (loc, "anonymous methods"); current_anonymous_method = new AnonymousMethodExpression (loc); } current_anonymous_method.IsAsync = isAsync; async_block = isAsync; // Force the next block to be created as a ToplevelBlock parsing_anonymous_method = true; }
public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression) { return null; }