Stupid bug - extract the content fields correctly.
[virt-mem.git] / extract / codegen / code_generation.ml
index b462af2..eaec4c8 100644 (file)
@@ -346,25 +346,29 @@ let generate_parsers xs =
            ) sf.SC.sf_fields in
 
          let shape_assignments =
-           String.concat ";\n        " shape_assignments in
+           if shape_assignments = [] then "()"
+           else
+             "{ " ^ String.concat ";\n        " shape_assignments ^ " }" in
 
          let content_assignments =
            List.map (
              fun { PP.field_name = field_name } ->
-               sprintf "%s_%s = %s" sf.SC.sf_name field_name field_name
-           ) sf.SC.sf_fields in
+               sprintf "%s_%s = %s" cf.SC.cf_name field_name field_name
+           ) cf.SC.cf_fields in
 
          let content_assignments =
-           String.concat ";\n        " content_assignments in
+           if content_assignments = [] then "()"
+           else
+             "{ " ^ String.concat ";\n        " content_assignments ^ " }" in
 
          let code =
            sprintf "
   bitmatch bits with
   | { %s } ->
       let shape =
-      { %s } in
+      %s in
       let content =
-      { %s } in
+      %s in
       { %s_shape = shape; %s_content = content }
   | { _ } ->
       raise (Virt_mem_types.ParseError (%S, %S, match_err))"