def emitCode(self, gen): from nine.codegenerator import CodeGenerator log.write('emit', 'emitCode func', self, self.name) assert self.builder is not None, (self, self.name, self.klass) subGen = CodeGenerator(gen) subGen.ilGen = self.builder.GetILGenerator() subGen.methodBuilder = self.builder if not self.flags.abstract: self.body.emitCode(subGen) subGen.ilGen.Emit(subGen.opCodes.Ret)
def emitCode(self, gen): from CLR import System from nine import util from nine.codegenerator import CodeGenerator subGen = CodeGenerator(gen) subGen.ilGen = self.builder.GetILGenerator() subGen.methodBuilder = self.builder subGen.ilGen.Emit(gen.opCodes.Ldarg_0) #FIXME: remove when super() is implemented #auto-call super ctor base = self.klass.bases[0] assert base is not None, "ALL Classes have a base!" baseCtor = base.getCtor([]) subGen.ilGen.Emit(gen.opCodes.Call, baseCtor.builder) self.body.emitCode(subGen) subGen.ilGen.Emit(subGen.opCodes.Ret)