public override void Visit (EventProperty ep) { CustomEventDeclaration newEvent = new CustomEventDeclaration (); AddAttributeSection (newEvent, ep); var location = LocationsBag.GetMemberLocation (ep); AddModifiers (newEvent, location); if (location != null) newEvent.AddChild (new CSharpTokenNode (Convert (location[0]), "event".Length), CustomEventDeclaration.Roles.Keyword); newEvent.AddChild (ConvertToType (ep.TypeName), CustomEventDeclaration.Roles.Type); if (ep.MemberName.Left != null) { newEvent.AddChild (ConvertToType (ep.MemberName.Left), CustomEventDeclaration.PrivateImplementationTypeRole); var privateImplTypeLoc = LocationsBag.GetLocations (ep.MemberName.Left); if (privateImplTypeLoc != null) newEvent.AddChild (new CSharpTokenNode (Convert (privateImplTypeLoc[0]), 1), MethodDeclaration.Roles.Dot); } newEvent.AddChild (Identifier.Create (ep.MemberName.Name, Convert (ep.Location)), CustomEventDeclaration.Roles.Identifier); if (location != null && location.Count >= 2) newEvent.AddChild (new CSharpTokenNode (Convert (location[1]), 1), CustomEventDeclaration.Roles.LBrace); if (ep.Add != null) { Accessor addAccessor = new Accessor (); AddAttributeSection (addAccessor, ep.Add); var addLocation = LocationsBag.GetMemberLocation (ep.Add); AddModifiers (addAccessor, addLocation); addAccessor.AddChild (new CSharpTokenNode (Convert (ep.Add.Location), "add".Length), CustomEventDeclaration.Roles.Keyword); if (ep.Add.Block != null) addAccessor.AddChild ((BlockStatement)ep.Add.Block.Accept (this), CustomEventDeclaration.Roles.Body); newEvent.AddChild (addAccessor, CustomEventDeclaration.AddAccessorRole); } if (ep.Remove != null) { Accessor removeAccessor = new Accessor (); AddAttributeSection (removeAccessor, ep.Remove); var removeLocation = LocationsBag.GetMemberLocation (ep.Remove); AddModifiers (removeAccessor, removeLocation); removeAccessor.AddChild (new CSharpTokenNode (Convert (ep.Remove.Location), "remove".Length), CustomEventDeclaration.Roles.Keyword); if (ep.Remove.Block != null) removeAccessor.AddChild ((BlockStatement)ep.Remove.Block.Accept (this), CustomEventDeclaration.Roles.Body); newEvent.AddChild (removeAccessor, CustomEventDeclaration.RemoveAccessorRole); } if (location != null && location.Count >= 3) { newEvent.AddChild (new CSharpTokenNode (Convert (location[2]), 1), CustomEventDeclaration.Roles.RBrace); } else { // parser error, set end node to max value. newEvent.AddChild (new ErrorNode (), AstNode.Roles.Error); } typeStack.Peek ().AddChild (newEvent, TypeDeclaration.MemberRole); }
public override void Visit(EventProperty ep) { var newEvent = new CustomEventDeclaration(); AddAttributeSection(newEvent, ep); var location = LocationsBag.GetMemberLocation(ep); AddModifiers(newEvent, location); if (location != null && location.Count > 0) newEvent.AddChild(new CSharpTokenNode(Convert(location [0]), CustomEventDeclaration.EventKeywordRole), CustomEventDeclaration.EventKeywordRole); newEvent.AddChild(ConvertToType(ep.TypeExpression), Roles.Type); AddExplicitInterface(newEvent, ep.MemberName); newEvent.AddChild(Identifier.Create(ep.MemberName.Name, Convert(ep.Location)), Roles.Identifier); if (location != null && location.Count >= 2) newEvent.AddChild(new CSharpTokenNode(Convert(location [1]), Roles.LBrace), Roles.LBrace); if (ep.Add != null) { var addAccessor = new Accessor(); AddAttributeSection(addAccessor, ep.Add); var addLocation = LocationsBag.GetMemberLocation(ep.Add); AddModifiers(addAccessor, addLocation); addAccessor.AddChild(new CSharpTokenNode(Convert(ep.Add.Location), CustomEventDeclaration.AddKeywordRole), CustomEventDeclaration.AddKeywordRole); if (ep.Add.Block != null) addAccessor.AddChild((BlockStatement)ep.Add.Block.Accept(this), Roles.Body); newEvent.AddChild(addAccessor, CustomEventDeclaration.AddAccessorRole); } if (ep.Remove != null) { var removeAccessor = new Accessor(); AddAttributeSection(removeAccessor, ep.Remove); var removeLocation = LocationsBag.GetMemberLocation(ep.Remove); AddModifiers(removeAccessor, removeLocation); removeAccessor.AddChild(new CSharpTokenNode(Convert(ep.Remove.Location), CustomEventDeclaration.RemoveKeywordRole), CustomEventDeclaration.RemoveKeywordRole); if (ep.Remove.Block != null) removeAccessor.AddChild((BlockStatement)ep.Remove.Block.Accept(this), Roles.Body); newEvent.AddChild(removeAccessor, CustomEventDeclaration.RemoveAccessorRole); } if (location != null && location.Count >= 3) { newEvent.AddChild(new CSharpTokenNode(Convert(location [2]), Roles.RBrace), Roles.RBrace); } else { // parser error, set end node to max value. newEvent.AddChild(new ErrorNode(), Roles.Error); } typeStack.Peek().AddChild(newEvent, Roles.TypeMemberRole); }
public override void Visit (EventProperty ep) { CustomEventDeclaration newEvent = new CustomEventDeclaration (); var location = LocationsBag.GetMemberLocation (ep); AddModifiers (newEvent, location); if (location != null) newEvent.AddChild (new CSharpTokenNode (Convert (location[0]), "event".Length), CustomEventDeclaration.Roles.Keyword); newEvent.AddChild (ConvertToType (ep.TypeName), CustomEventDeclaration.Roles.Type); newEvent.AddChild (new Identifier (ep.MemberName.Name, Convert (ep.MemberName.Location)), CustomEventDeclaration.Roles.Identifier); if (location != null && location.Count >= 2) newEvent.AddChild (new CSharpTokenNode (Convert (location[1]), 1), CustomEventDeclaration.Roles.LBrace); if (ep.Add != null) { Accessor addAccessor = new Accessor (); var addLocation = LocationsBag.GetMemberLocation (ep.Add); AddModifiers (addAccessor, addLocation); addAccessor.AddChild (new CSharpTokenNode (Convert (ep.Add.Location), "add".Length), CustomEventDeclaration.Roles.Keyword); if (ep.Add.Block != null) addAccessor.AddChild ((BlockStatement)ep.Add.Block.Accept (this), CustomEventDeclaration.Roles.Body); newEvent.AddChild (addAccessor, CustomEventDeclaration.AddAccessorRole); } if (ep.Remove != null) { Accessor removeAccessor = new Accessor (); var removeLocation = LocationsBag.GetMemberLocation (ep.Remove); AddModifiers (removeAccessor, removeLocation); removeAccessor.AddChild (new CSharpTokenNode (Convert (ep.Remove.Location), "remove".Length), CustomEventDeclaration.Roles.Keyword); if (ep.Remove.Block != null) removeAccessor.AddChild ((BlockStatement)ep.Remove.Block.Accept (this), CustomEventDeclaration.Roles.Body); newEvent.AddChild (removeAccessor, CustomEventDeclaration.RemoveAccessorRole); } if (location != null && location.Count >= 3) newEvent.AddChild (new CSharpTokenNode (Convert (location[2]), 1), CustomEventDeclaration.Roles.RBrace); typeStack.Peek ().AddChild (newEvent, TypeDeclaration.MemberRole); }