all_tp_builders = TypeBuilder.DefineGenericParameters (tparam_names);
- if (CurrentTypeParameters != null)
- CurrentTypeParameters.Define (all_tp_builders, spec, CurrentTypeParametersStartIndex, this);
+ if (CurrentTypeParameters != null) {
+ CurrentTypeParameters.Create (spec, CurrentTypeParametersStartIndex, this);
+ CurrentTypeParameters.Define (all_tp_builders);
+ }
}
return true;
members.Add (proxy_method);
proxy_method.Define ();
+ proxy_method.PrepareEmit ();
hoisted_base_call_proxies.Add (method, proxy_method);
}
foreach (var member in members) {
var pm = member as IParametersMember;
if (pm != null) {
+ var mc = member as MethodOrOperator;
+ if (mc != null) {
+ mc.PrepareEmit ();
+ }
var p = pm.Parameters;
if (p.IsEmpty)
current_type = null;
}
- void UpdateTypeParameterConstraints (TypeDefinition part)
- {
- for (int i = 0; i < CurrentTypeParameters.Count; i++) {
- if (CurrentTypeParameters[i].AddPartialConstraints (part, part.MemberName.TypeParameters[i]))
- continue;
-
- Report.SymbolRelatedToPreviousError (Location, "");
- Report.Error (265, part.Location,
- "Partial declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
- GetSignatureForError (), CurrentTypeParameters[i].GetSignatureForError ());
- }
- }
-
public override void RemoveContainer (TypeContainer cont)
{
base.RemoveContainer (cont);
}
if (IsPartialPart) {
- PartialContainer.UpdateTypeParameterConstraints (this);
+ PartialContainer.CurrentTypeParameters.UpdateConstraints (this);
}
return true;