コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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));
        }