Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)