diff --git a/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs b/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs index bd3a2d8e581c4cbab1e6e07ca38169296012d2b5..06500beddf48085adbde892fd19b087432348815 100644 --- a/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs +++ b/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs @@ -63,6 +63,13 @@ namespace SimpleLang.Visitors binop.Left.Visit(this); binop.Right.Visit(this); + + + if (binOperationsTypes.Count != 0 && !binOperationsTypes.All((t)=>t== binOperationsTypes[0])) + { + + throw new Exception("Переменные должны быть одного типа!"); + } switch (binop.Op) { case '+': diff --git a/TestCodeGenerator/Tests.cs b/TestCodeGenerator/Tests.cs index e7994e2eeef34d4158a205dceba3250da1de6638..5df6e77a5dd1a510b228ae852301d304afef1ce7 100644 --- a/TestCodeGenerator/Tests.cs +++ b/TestCodeGenerator/Tests.cs @@ -68,7 +68,8 @@ namespace TestCodeGenerator [Test] public void SmokeTest2() { - Assert.AreEqual("2.2", TestHelper.GenerateNRun(@"begin float a; a := 1.2; if a then a:=a+1 else a:=a+2; write(a) end")); + Assert.AreEqual("2.2", TestHelper.GenerateNRun(@"begin float a; a := 1.2; if a then a:=a+1.0 else a:=a+2.0; write(a) end")); + //Assert.AreEqual("2", TestHelper.GenerateNRun(@"begin int a; a := 1; if a then a:=a+1 else a:=a+2; write(a) end")); } [Test] @@ -134,7 +135,7 @@ namespace TestCodeGenerator [Test] public void TestTypes() { - Assert.AreEqual("2.4", TestHelper.GenerateNRun(@"begin var b; b := (232 / 5) + (232 % 5); write(b) end")); + Assert.AreEqual("48", TestHelper.GenerateNRun(@"begin int b1; b1 := (232 / 5) + (232 % 5); write(b1) end")); //Assert.AreEqual("2.4", TestHelper.GenerateNRun(@"begin int b; b := 1.2; write(b) end")); }