From 6a2e7e17a4390958de4431a783019c69e1d033c3 Mon Sep 17 00:00:00 2001 From: Elijah Gichev <elijah.gichev@gmail.com> Date: Sun, 25 Dec 2022 22:07:13 +0300 Subject: [PATCH] added bin op type checking --- Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs | 7 +++++++ TestCodeGenerator/Tests.cs | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs b/Module8/Visitors/GenCodeVisitors/GenCodeVisitor.cs index bd3a2d8..06500be 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 e7994e2..5df6e77 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")); } -- GitLab