void AddVirtuals(List<IMember> alreadyInserted, CompletionDataWrapper col, string modifiers, IType curType, int declarationBegin)
{
if (curType == null) {
return;
}
foreach (var m in curType.GetMembers ().Reverse ()) {
if (curType.Kind != TypeKind.Interface && !m.IsOverridable) {
continue;
}
// filter out the "Finalize" methods, because finalizers should be done with destructors.
if (m is IMethod && m.Name == "Finalize") {
continue;
}
var data = factory.CreateNewOverrideCompletionData(
declarationBegin,
currentType,
m
);
// check if the member is already implemented
bool foundMember = curType.GetMembers().Any(cm => SignatureComparer.Ordinal.Equals(
cm,
m
) && cm.DeclaringTypeDefinition == curType.GetDefinition()
);
if (foundMember) {
continue;
}
if (alreadyInserted.Any(cm => SignatureComparer.Ordinal.Equals(cm, m)))
continue;
alreadyInserted.Add(m);
data.CompletionCategory = col.GetCompletionCategory(m.DeclaringTypeDefinition);
col.Add(data);
}
}