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); }
public void LiteralAssignedExpressionTest() { var result = Syntax.FieldDeclaration.End().ParseVein("foo: Int32 = -22;"); Assert.NotNull(result); Assert.AreEqual("int32", result.Type.Identifier.ToString().ToLower()); Assert.AreEqual("foo", result.Field.Identifier.ToString()); Assert.AreEqual("(22)", result.Field.Expression.ExpressionString); IshtarAssert.IsType <UnaryExpressionSyntax>(result.Field.Expression); }
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); }
public void FullsetMethodParametersAndBodyTest() { var a = new VeinSyntax(); var d = a.ClassDeclaration .ParseVein("public class DDD { public test(x: int32): void { } }"); Assert.False(d.IsStruct); Assert.False(d.IsInterface); Assert.AreEqual("DDD", d.Identifier.ToString()); IshtarAssert.Contains(d.Modifiers, x => x.ModificatorKind == ModificatorKind.Public); var method = d.Methods.Single(); Assert.AreEqual("test", method.Identifier.ToString()); IshtarAssert.Contains(method.Modifiers, x => x.ModificatorKind == ModificatorKind.Public); Assert.AreEqual("void", method.ReturnType.Identifier.ToString().ToLower()); var @params = method.Parameters.Single(); Assert.AreEqual("x", @params.Identifier.ToString()); Assert.AreEqual("int32", @params.Type.Identifier.ToString().ToLower()); }