TypeExpr[] GetNormalPartialBases ()
{
var ifaces = new List<TypeExpr> (0);
if (iface_exprs != null)
ifaces.AddRange (iface_exprs);
foreach (TypeContainer part in partial_parts) {
TypeExpr new_base_class;
TypeExpr[] new_ifaces = part.ResolveBaseTypes (out new_base_class);
if (new_base_class != null) {
if (base_type_expr != null && new_base_class.Type != base_type) {
Report.SymbolRelatedToPreviousError (new_base_class.Location, "");
Report.Error (263, part.Location,
"Partial declarations of `{0}' must not specify different base classes",
part.GetSignatureForError ());
} else {
base_type_expr = new_base_class;
base_type = base_type_expr.Type;
}
}
if (new_ifaces == null)
continue;
foreach (TypeExpr iface in new_ifaces) {
if (ifaces.Contains (iface))
continue;
ifaces.Add (iface);
}
}
if (ifaces.Count == 0)
return null;
return ifaces.ToArray ();
}