Пример #1
0
        public void ReturnStatementCompilation2()
        {
            var ret = new ReturnStatementSyntax(new IdentifierExpression("x"));

            var actual     = CreateGenerator();
            var ctx_actual = actual.ConsumeFromMetadata <GeneratorContext>("context");

            ctx_actual.Classes.First().Value
            .DefineField("x", FieldFlags.None, VeinTypeCode.TYPE_STRING.AsClass());


            actual.EmitReturn(ret);

            var expected     = CreateGenerator();
            var ctx_expected = expected.ConsumeFromMetadata <GeneratorContext>("context");

            var field = ctx_expected.Classes.First().Value
                        .DefineField("x", FieldFlags.None, VeinTypeCode.TYPE_STRING.AsClass());

            expected.Emit(OpCodes.LDARG_0);
            expected.Emit(OpCodes.LDF, field);
            expected.Emit(OpCodes.RET);

            IshtarAssert.SequenceEqual(expected._debug_list, actual._debug_list);
        }
Пример #2
0
        public void ReturnStatementCompilation3()
        {
            var ret = new ReturnStatementSyntax(new IdentifierExpression("x"));

            var actual = CreateGenerator(("x", VeinTypeCode.TYPE_STRING));

            actual.EmitReturn(ret);

            var expected = CreateGenerator(("x", VeinTypeCode.TYPE_STRING));

            expected.Emit(OpCodes.LDARG_0);
            expected.Emit(OpCodes.RET);

            IshtarAssert.SequenceEqual(expected._debug_list, actual._debug_list);
        }