Fixes for TypeDict: a reference to AST.TypeString should have been AST.TypeStr, fix...
authorNick Downing <nick@ndcode.org>
Fri, 17 Nov 2023 10:52:36 +0000 (21:52 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 19 Nov 2023 12:35:32 +0000 (23:35 +1100)
ndcode/pitree/pitree.t

index b76f489..ac253b2 100644 (file)
@@ -453,6 +453,7 @@ def generate_serialize(self, context, expr):
   return expr
 @method(AST.TypeDict)
 def generate_serialize(self, context, expr):
+  indent_save = context.indent
   if self.is_json:
     result = expr
   elif isinstance(self.children[0], AST.TypeStr):
@@ -460,12 +461,12 @@ def generate_serialize(self, context, expr):
     result = '''{{
 {0:s}  {1:s}:
 {2:s}  {3:s}
-{4:s}  for i in {5:s}
+{4:s}  for k, v in {5:s}.items()
 {6:s}}}'''.format(
       indent_save,
-      self.children[0].generate_serialize(context, 'i[0]'),
+      self.children[0].generate_serialize(context, 'k'),
       indent_save,
-      self.children[0].generate_serialize(context, 'i[1]'),
+      self.children[1].generate_serialize(context, 'v'),
       indent_save,
       expr,
       indent_save
@@ -483,7 +484,7 @@ def generate_serialize(self, context, expr):
       indent_save,
       self.children[0].generate_serialize(context, 'k'),
       indent_save,
-      self.children[0].generate_serialize(context, 'v'),
+      self.children[1].generate_serialize(context, 'v'),
       indent_save,
       indent_save,
       expr,
@@ -738,7 +739,7 @@ def post_process(self):
 def post_process(self):
   self.children[0].post_process()
   self.children[1].post_process()
-  self.is_json = isinstance(self.children[0], AST.TypeString) and self.children[1].is_json
+  self.is_json = isinstance(self.children[0], AST.TypeStr) and self.children[1].is_json
 @method(AST.TypeInt)
 def post_process(self):
   self.is_json = True