virtual public void visit(AST.Class node) { foreach (var variable in node.variables) { variable.accept(this); } foreach (var function in node.functions) { function.accept(this); } }
public override bool VisitClassDecl(AST.Class @class) { foreach (var vfptr in @class.Layout.VFTables) { var uniqueEntries = new OrderedSet <VTableComponent>(); foreach (var entry in vfptr.Layout.Components) { uniqueEntries.Add(entry); } // The vftable does not have duplicated components. if (vfptr.Layout.Components.Count == uniqueEntries.Count) { continue; } Driver.Diagnostics.EmitWarning( "Class '{0}' found with duplicated vftable components", @class.Name); vfptr.Layout.Components = uniqueEntries.ToList(); } return(base.VisitClassDecl(@class)); }