public virtual void Visit (Destructor d) { }
public override void Visit (Destructor d) { DestructorDeclaration newDestructor = new DestructorDeclaration (); AddAttributeSection (newDestructor, d); var location = LocationsBag.GetMemberLocation (d); AddModifiers (newDestructor, location); if (location != null && location.Count > 0) newDestructor.AddChild (new CSharpTokenNode (Convert (location [0]), DestructorDeclaration.TildeRole), DestructorDeclaration.TildeRole); newDestructor.AddChild (Identifier.Create (d.Identifier, Convert (d.MemberName.Location)), Roles.Identifier); if (location != null && location.Count > 1) { newDestructor.AddChild (new CSharpTokenNode (Convert (location [1]), Roles.LPar), Roles.LPar); if (location.Count > 2) newDestructor.AddChild (new CSharpTokenNode (Convert (location [2]), Roles.RPar), Roles.RPar); } if (d.Block != null) newDestructor.AddChild ((BlockStatement)d.Block.Accept (this), Roles.Body); typeStack.Peek ().AddChild (newDestructor, Roles.TypeMemberRole); }
void case_300() #line 2889 "ps-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ report.Error (574, lt.Location, "Name of destructor must match name of class"); } else if (current_container.Kind != MemberKind.Class){ report.Error (575, lt.Location, "Only class types can contain destructor"); } Destructor d = new Destructor (current_type, (Modifiers) yyVals[-7+yyTop], ParametersCompiled.EmptyReadOnlyParameters, (Attributes) yyVals[-8+yyTop], lt.Location); if (doc_support) d.DocComment = ConsumeStoredComment (); d.Block = (ToplevelBlock) yyVals[0+yyTop]; if (is_config_enabled) { current_type.AddMember (d); } is_config_enabled = true; lbag.AddMember (d, GetModifierLocations (), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[-1+yyTop])); current_local_parameters = null; }