Bläddra i källkod

Fixed problem in random due to compiler error for definitions with value

Yentl Van Tendeloo 9 år sedan
förälder
incheckning
80a6de964e

+ 9 - 2
bootstrap/random.alc

@@ -17,10 +17,17 @@ Float function random():
 	seed = integer_modulo(a * seed + c, m)
 
 	// The seed is the new value
+	log("Return random " + cast_f2s(seed))
 	return seed / m
 
 Integer function random_interval(a : Integer, b : Integer):
-	return cast_f2i(random() * (b - a) + a)
+	if (a == b):
+		return a
+	else:
+		return cast_f2i(random() * (b - a) + a)
 
 Element function random_choice(list : Element):
-	return read_edge_dst(read_out(list, random_interval(0, read_nr_out(list) - 1)))
+	if (list_len(list) == 0):
+		return read_root()
+	else:
+		return read_edge_dst(read_out(list, random_interval(0, read_nr_out(list) - 1)))

+ 0 - 1
interface/HUTN/hutn_compiler/primitives_object_visitor.py

@@ -49,7 +49,6 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
                 print("[CACHED] %s" % simple_filename)
 
     def dump(self):
-        print("DUMP")
         v = PrimitivesVisitor.dump(self)
         data = []
 

+ 4 - 4
interface/HUTN/hutn_compiler/primitives_visitor.py

@@ -411,17 +411,17 @@ class PrimitivesVisitor(Visitor):
         assign = self.value("assign")
         self.dict(assign, "var", resolve)
 
-        const = self.value("constant")
-
         self.visit_atomvalue(tree.get_tail()[-1])
         value = self.get_primitive(tree.get_tail()[-1])
 
         #TODO hack...
         if value is None:
+            const = self.value("constant")
             value = self.node()
+            self.dict(const, "node", value)
+            value = const
 
-        self.dict(const, "node", value)
-        self.dict(assign, "value", const)
+        self.dict(assign, "value", value)
 
         self.set_primitive(tree, (declare, assign))