Explorar el Código

Fix Rust codegen

Joeri Exelmans hace 4 años
padre
commit
ae8735f1b4
Se han modificado 2 ficheros con 8 adiciones y 4 borrados
  1. 3 3
      src/sccd/statechart/codegen/rust.py
  2. 5 1
      src/sccd/test/codegen/rust.py

+ 3 - 3
src/sccd/statechart/codegen/rust.py

@@ -666,11 +666,11 @@ class StatechartRustGenerator(ActionLangRustGenerator):
 
         if DEBUG:
             self.w.writeln("use std::mem::size_of;")
-            self.w.writeln("fn debug_print_sizes() {")
+            self.w.writeln("fn debug_print_sizes<TimerId: Copy>() {")
             self.w.writeln("  eprintln!(\"------------------------\");")
-            self.w.writeln("  eprintln!(\"info: Statechart: {} bytes\", size_of::<Statechart>());")
+            self.w.writeln("  eprintln!(\"info: Statechart: {} bytes\", size_of::<Statechart<TimerId>>());")
             self.w.writeln("  eprintln!(\"info:   DataModel: {} bytes\", size_of::<DataModel>());")
-            self.w.writeln("  eprintln!(\"info:   Timers: {} bytes\", size_of::<Timers>());")
+            self.w.writeln("  eprintln!(\"info:   Timers: {} bytes\", size_of::<Timers<TimerId>>());")
             def write_state_size(state):
                 self.w.writeln("  eprintln!(\"info:   State %s: {} bytes\", size_of::<%s>());" % (state.full_name, ident_type(state)))
                 for child in state.real_children:

+ 5 - 1
src/sccd/test/codegen/rust.py

@@ -17,6 +17,8 @@ class TestRustGenerator(ClassDiagramRustGenerator):
         self.w.writeln("use sccd::statechart;")
         self.w.writeln("use sccd::statechart::SC;")
         self.w.writeln("use sccd::statechart::Scheduler;")
+        if DEBUG:
+            self.w.writeln("debug_print_sizes::<controller::TimerId>();")
         self.w.writeln();
 
         self.w.writeln("let mut raised = Vec::<statechart::OutEvent>::new();")
@@ -51,8 +53,10 @@ class TestRustGenerator(ClassDiagramRustGenerator):
             self.w.writeln()
 
         self.w.writeln("fn main() {")
+
         for i, v in enumerate(test.variants):
+            self.w.writeln("  eprintln!(\"Test variant %d\");" % i)
             self.w.writeln("  variant%d::run();" % i)
-            self.w.writeln("  eprintln!(\"Test variant %d passed\");" % i)
+            self.w.writeln("  eprintln!(\"Passed.\");")
         self.w.writeln("}")
         self.w.writeln()