From bc4cf703c3b9a427ceafc58f8f64e78718479f8d Mon Sep 17 00:00:00 2001
From: hansen <dominik_hansen@web.de>
Date: Wed, 30 Apr 2014 16:20:15 +0200
Subject: [PATCH] multiple recursive functions

---
 .../java/de/tla2b/analysis/SpecAnalyser.java   |  5 ++---
 .../prettyprintb/RecursiveFunctionTest.java    | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/tla2b/analysis/SpecAnalyser.java b/src/main/java/de/tla2b/analysis/SpecAnalyser.java
index 7602508..f0de31a 100644
--- a/src/main/java/de/tla2b/analysis/SpecAnalyser.java
+++ b/src/main/java/de/tla2b/analysis/SpecAnalyser.java
@@ -18,7 +18,6 @@ import de.tla2b.exceptions.SemanticErrorException;
 import de.tla2b.global.BBuiltInOPs;
 import de.tla2b.global.TranslationGlobals;
 import de.tla2b.types.IType;
-import de.tla2b.types.TLAType;
 
 import tla2sany.semantic.ASTConstants;
 import tla2sany.semantic.AssumeNode;
@@ -108,6 +107,8 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 
 	public void start() throws SemanticErrorException, FrontEndException,
 			ConfigFileErrorException, NotImplementedException {
+		
+		
 		if (spec != null) {
 			evalSpec();
 		} else {
@@ -134,7 +135,6 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 								con.getName()));
 			}
 		}
-
 		evalRecursiveFunctions();
 	}
 
@@ -579,7 +579,6 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 				case OPCODE_rfs: { // recursive Function
 					bDefinitionsSet.remove(def);
 					recursiveFunctions.add(def);
-					return;
 				}
 				}
 			}
diff --git a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
index b2f3c81..3341f3c 100644
--- a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
+++ b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
@@ -52,6 +52,24 @@ public class RecursiveFunctionTest {
 				+ "fac = %(x).(x : NATURAL | 5 + (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 56 \n"
 				+ "END";
 		compare(expected, module);
+	}
+
+	@Test
+	public void testSum() throws Exception {
+		final String module = "-------------- MODULE Testing ----------------\n"
+				+ "EXTENDS Integers, FiniteSets \n"
+				+ "	Sum[x \\in Nat] == IF x = 0 THEN 0 ELSE x + Sum[x-1] \n"
+				+ "ASSUME 6 = Sum[3] \n"
+				+ "=================================";
 
+		final String expected = "MACHINE Testing\n"
+				+ "ABSTRACT_CONSTANTS Sum\n"
+				+ "PROPERTIES "
+				+ "Sum = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 0 | 0) \\/ %(t_).(t_ = 0 & not(x = 0) | x + Sum((x - 1))))(0)) & 6 = Sum(3) \n"
+				+ "END";
+		compare(expected, module);
 	}
+
+
+
 }
-- 
GitLab