예제 #1
0
        public void UpdateFromBases(Tuple mro)
        {
            if (!isSuperTypeMethod)
            {
                return;
            }

            Debug.Assert(mro.Count > 0);
            MethodWrapper current = (MethodWrapper)myField.GetValue(mro[0]);

            for (int i = 1; i < mro.Count; i++)
            {
                if (current != null && !current.isSuperTypeMethod)
                {
                    break;
                }

                object baseTypeObj = mro[i];

                PythonType baseType = baseTypeObj as PythonType;
                if (baseType == null)
                {
                    System.Diagnostics.Debug.Assert(baseTypeObj is DynamicType);
                    continue;
                }
                baseType.Initialize();
                string fieldname = (string)SymbolTable.IdToString(name);

                current = (MethodWrapper)myField.GetValue(baseType);
            }

            if (current != null)
            {
                UpdateFromBase(current);
            }
        }