private ConstructorBuilder EmitConstructorForDefType(TypeBuilder fnTB, Type baseType)
{
ConstructorBuilder cb = fnTB.DefineConstructor(MethodAttributes.Public, CallingConventions.HasThis, CtorTypes());
CljILGen gen = new CljILGen(cb.GetILGenerator());
GenContext.EmitDebugInfo(gen, SpanMap);
// Pass closed-overs to base class ctor
gen.EmitLoadArg(0); // gen.Emit(OpCodes.Ldarg_0);
int a = 0;
for (ISeq s = RT.keys(Closes); s != null; s = s.next(), a++)
{
//LocalBinding lb = (LocalBinding)s.first();
//FieldBuilder fb = _closedOverFields[a];
//bool isVolatile = IsVolatile(_closedOverFieldsToBindingsMap[fb]);
gen.EmitLoadArg(a + 1); // gen.Emit(OpCodes.Ldarg, a + 1);
}
gen.Emit(OpCodes.Call, BaseClassClosedOverCtor);
gen.Emit(OpCodes.Ret);
return cb;
}