Pārlūkot izejas kodu

Fixed new type of return without exceptions and related errors in compiled/primitives

Yentl Van Tendeloo 7 gadi atpakaļ
vecāks
revīzija
71d6e56ff6

+ 2 - 2
kernel/modelverse_kernel/compiled.py

@@ -202,7 +202,7 @@ def element_neq(a, b, **remainder):
         yield [("RETURN", [{'value': False}])]
     else:
         #raise PrimitiveFinished({'value': a['id'] != b['id']})
-        yield [("RETURN", [{'value': a['value'] != b['value']}])]
+        yield [("RETURN", [{'value': a['id'] != b['id']}])]
 
 def list_append(a, b, **remainder):
     if "id" not in b:
@@ -240,7 +240,7 @@ def dict_add(a, b, c, **remainder):
 def dict_len(a, **remainder):
     outgoings, = yield [("RO", [a['id']])]
     #raise PrimitiveFinished({'value': len(outgoings)})
-    yield [("RETURN", [{'value': len(outgoing)}])]
+    yield [("RETURN", [{'value': len(outgoings)}])]
 
 def set_add(a, b, **remainder):
     if 'value' not in b:

+ 1 - 1
kernel/modelverse_kernel/primitives.py

@@ -416,7 +416,7 @@ def read_in(a, b, root, **remainder):
 
     incoming, = yield [("RI", [a['id']])]
     #raise PrimitiveFinished({'id': sorted(incoming)[b['value']] if len(incoming) > b['value'] else root})
-    yield [("RETURN", [{'id': sorted(outgoing)[b['value']] if len(incoming) > b['value'] else root}])]
+    yield [("RETURN", [{'id': sorted(incoming)[b['value']] if len(incoming) > b['value'] else root}])]
 
 def read_edge_src(a, **remainder):
     result, = yield [("RE", [a['id']])]

+ 4 - 10
kernel/modelverse_kernel/request_handler.py

@@ -19,25 +19,21 @@ class RequestHandler(object):
         self.reply = reply
         while self.generator_stack:
             try:
-                print("Stack: " + str(self.generator_stack))
                 requests = self.generator_stack[-1].send(self.reply)
-                print("Requests: " + str(requests))
 
                 # Generated new request, so process
                 if requests and requests[0][0] in self.handlers:
-                    # Try to add a new generator to branch into
                     self.generator_stack.append(None)
                     # This next command potentially raises a finished message already, meaning that we should stop already
                     # We avoid an extra try/except block by putting the None on the stack already
-                    self.generator_stack[-1] = self.handlers[requests[0][0]](requests[0][1])
                     self.reply = None
+                    self.generator_stack[-1] = self.handlers[requests[0][0]](requests[0][1])
                 else:
                     # MvS request, so forward that instead
                     return requests
 
             except StopIteration:
                 # Exception, so finished execution of this generator, passing on None to the caller
-                print("STOPITER")
                 del self.generator_stack[-1]
                 self.reply = [None]
                 
@@ -50,14 +46,12 @@ class RequestHandler(object):
                 # Exception, so finished execution of this generator, passing on ex.result to the caller
                 del self.generator_stack[-1]
                 self.reply = [ex.result]
-                print("SHOULD NOT HAPPEN")
 
     def execute_sleep(self, request_args):
         raise primitive_functions.SleepKernel(request_args[0], request_args[1])
 
     def execute_return(self, request_args):
-        print("RETURNING")
-        print(self.generator_stack)
         del self.generator_stack[-1]
-        self.reply = request_args[0]
-        print(self.generator_stack)
+        del self.generator_stack[-1]
+        self.reply = [request_args[0]]
+        return self.generator_stack[-1]

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed May  2 08:43:16 2018
+Date:   Wed May  2 09:25:29 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server