public override void Visit (EventField e) { EventDeclaration newEvent = new EventDeclaration (); AddAttributeSection (newEvent, e); var location = LocationsBag.GetMemberLocation (e); int l = 0; AddModifiers (newEvent, location); if (location != null && location.Count > 0) newEvent.AddChild (new CSharpTokenNode (Convert (location [l++]), EventDeclaration.EventKeywordRole), EventDeclaration.EventKeywordRole); newEvent.AddChild (ConvertToType (e.TypeExpression), Roles.Type); VariableInitializer variable = new VariableInitializer (); variable.AddChild (Identifier.Create (e.MemberName.Name, Convert (e.MemberName.Location)), Roles.Identifier); if (e.Initializer != null) { if (location != null && location.Count > l) variable.AddChild (new CSharpTokenNode (Convert (location [l++]), Roles.Assign), Roles.Assign); variable.AddChild ((Expression)e.Initializer.Accept (this), Roles.Expression); } newEvent.AddChild (variable, Roles.Variable); if (e.Declarators != null) { foreach (var decl in e.Declarators) { var declLoc = LocationsBag.GetLocations (decl); if (declLoc != null) newEvent.AddChild (new CSharpTokenNode (Convert (declLoc [0]), Roles.Comma), Roles.Comma); variable = new VariableInitializer (); variable.AddChild (Identifier.Create (decl.Name.Value, Convert (decl.Name.Location)), Roles.Identifier); if (decl.Initializer != null) { if (declLoc != null) variable.AddChild (new CSharpTokenNode (Convert (declLoc [1]), Roles.Assign), Roles.Assign); variable.AddChild ((Expression)decl.Initializer.Accept (this), Roles.Expression); } newEvent.AddChild (variable, Roles.Variable); } } if (location != null && location.Count > l) newEvent.AddChild (new CSharpTokenNode (Convert (location [l++]), Roles.Semicolon), Roles.Semicolon); typeStack.Peek ().AddChild (newEvent, Roles.TypeMemberRole); }
public RemoveDelegateMethod (EventField method): base (method, RemovePrefix) { }
public virtual void Visit (EventField e) { }
public AddDelegateMethod (EventField method): base (method, AddPrefix) { }
protected EventFieldAccessor (EventField method, string prefix) : base (method, prefix, null, method.Location) { }
public override bool Define() { var mod_flags_src = ModFlags; if (!base.Define ()) return false; if (declarators != null) { if ((mod_flags_src & Modifiers.DEFAULT_ACCESS_MODIFER) != 0) mod_flags_src &= ~(Modifiers.AccessibilityMask | Modifiers.DEFAULT_ACCESS_MODIFER); var t = new TypeExpression (MemberType, TypeExpression.Location); foreach (var d in declarators) { var ef = new EventField (Parent, t, mod_flags_src, new MemberName (d.Name.Value, d.Name.Location), OptAttributes); if (d.Initializer != null) ef.initializer = d.Initializer; ef.Define (); Parent.PartialContainer.Members.Add (ef); } } if (!HasBackingField) { SetIsUsed (); return true; } if (Add.IsInterfaceImplementation) SetIsUsed (); backing_field = new Field (Parent, new TypeExpression (MemberType, Location), Modifiers.BACKING_FIELD | Modifiers.COMPILER_GENERATED | Modifiers.PRIVATE | (ModFlags & (Modifiers.STATIC | Modifiers.UNSAFE)), MemberName, null); Parent.PartialContainer.Members.Add (backing_field); backing_field.Initializer = Initializer; backing_field.ModFlags &= ~Modifiers.COMPILER_GENERATED; // Call define because we passed fields definition backing_field.Define (); // Set backing field for event fields spec.BackingField = backing_field.Spec; return true; }
void case_302() #line 2934 "ps-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); Lexer.doc_state = XmlCommentState.Allowed; } if (current_event_field.Initializer != null) { lbag.AddMember (current_event_field, GetModifierLocations (), GetLocation (yyVals[-7+yyTop]), savedEventAssignLocation, GetLocation (yyVals[0+yyTop])); } else { lbag.AddMember (current_event_field, GetModifierLocations (), GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[0+yyTop])); } current_event_field = null; }
void case_301() #line 2917 "ps-parser.jay" { current_event_field = new EventField (current_type, (FullNamedExpression) yyVals[0+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-2+yyTop], (Attributes) yyVals[-5+yyTop]); if (is_config_enabled) { current_type.AddMember (current_event_field); } is_config_enabled = true; if (current_event_field.MemberName.ExplicitInterface != null) { report.Error (71, current_event_field.Location, "`{0}': An explicit interface implementation of an event must use property syntax", current_event_field.GetSignatureForError ()); } yyVal = current_event_field; }