void CheckBaseTypes(ClassDefinition node) { IType baseClass = null; foreach (TypeReference baseTypeRef in node.BaseTypes) { IType baseType = GetType(baseTypeRef); if (baseType.IsInterface) { continue; } if (null != baseClass) { Error(CompilerErrorFactory.ClassAlreadyHasBaseType(baseTypeRef, node.Name, baseClass)); continue; } baseClass = baseType; if (baseClass.IsFinal && !TypeSystemServices.IsError(baseClass)) { Error(CompilerErrorFactory.CannotExtendFinalType(baseTypeRef, baseClass)); } } if (null == baseClass) { node.BaseTypes.Insert(0, CodeBuilder.CreateTypeReference(TypeSystemServices.ObjectType)); } }