diff --git a/IronJava.Core/Serialization/AstJsonSerializer.cs b/IronJava.Core/Serialization/AstJsonSerializer.cs index cc7bd34..79d6b67 100644 --- a/IronJava.Core/Serialization/AstJsonSerializer.cs +++ b/IronJava.Core/Serialization/AstJsonSerializer.cs @@ -154,6 +154,7 @@ namespace MarketAlly.IronJava.Core.Serialization result["superClass"] = node.SuperClass?.Accept(this); result["interfaces"] = node.Interfaces.Select(i => i.Accept(this)).ToList(); result["members"] = node.Members.Select(m => m.Accept(this)).ToList(); + result["nestedTypes"] = node.NestedTypes.Select(t => t.Accept(this)).ToList(); result["isRecord"] = node.IsRecord; return result; } @@ -163,6 +164,7 @@ namespace MarketAlly.IronJava.Core.Serialization var result = CreateTypeDeclarationBase(node); result["extendedInterfaces"] = node.ExtendedInterfaces.Select(i => i.Accept(this)).ToList(); result["members"] = node.Members.Select(m => m.Accept(this)).ToList(); + result["nestedTypes"] = node.NestedTypes.Select(t => t.Accept(this)).ToList(); return result; } @@ -172,6 +174,7 @@ namespace MarketAlly.IronJava.Core.Serialization result["interfaces"] = node.Interfaces.Select(i => i.Accept(this)).ToList(); result["constants"] = node.Constants.Select(c => c.Accept(this)).ToList(); result["members"] = node.Members.Select(m => m.Accept(this)).ToList(); + result["nestedTypes"] = node.NestedTypes.Select(t => t.Accept(this)).ToList(); return result; } @@ -179,6 +182,7 @@ namespace MarketAlly.IronJava.Core.Serialization { var result = CreateTypeDeclarationBase(node); result["members"] = node.Members.Select(m => m.Accept(this)).ToList(); + result["nestedTypes"] = node.NestedTypes.Select(t => t.Accept(this)).ToList(); return result; } @@ -829,8 +833,12 @@ namespace MarketAlly.IronJava.Core.Serialization var interfaces = DeserializeList(element.GetProperty("interfaces")); var members = DeserializeList(element.GetProperty("members")); - var nestedTypes = DeserializeList(element.GetProperty("nestedTypes")); - var isRecord = element.GetProperty("isRecord").GetBoolean(); + var nestedTypes = element.TryGetProperty("nestedTypes", out var nestedTypesEl) + ? DeserializeList(nestedTypesEl) + : new List(); + var isRecord = element.TryGetProperty("isRecord", out var isRecordEl) + ? isRecordEl.GetBoolean() + : false; return new ClassDeclaration(location, name, modifiers, annotations, typeParameters, superClass, interfaces, members, nestedTypes, javaDoc, isRecord); } @@ -847,7 +855,9 @@ namespace MarketAlly.IronJava.Core.Serialization var extendedInterfaces = DeserializeList(element.GetProperty("extendedInterfaces")); var members = DeserializeList(element.GetProperty("members")); - var nestedTypes = DeserializeList(element.GetProperty("nestedTypes")); + var nestedTypes = element.TryGetProperty("nestedTypes", out var nestedTypesEl) + ? DeserializeList(nestedTypesEl) + : new List(); return new InterfaceDeclaration(location, name, modifiers, annotations, typeParameters, extendedInterfaces, members, nestedTypes, javaDoc); } @@ -864,7 +874,9 @@ namespace MarketAlly.IronJava.Core.Serialization var interfaces = DeserializeList(element.GetProperty("interfaces")); var constants = DeserializeList(element.GetProperty("constants")); var members = DeserializeList(element.GetProperty("members")); - var nestedTypes = DeserializeList(element.GetProperty("nestedTypes")); + var nestedTypes = element.TryGetProperty("nestedTypes", out var nestedTypesEl) + ? DeserializeList(nestedTypesEl) + : new List(); return new EnumDeclaration(location, name, modifiers, annotations, interfaces, constants, members, nestedTypes, javaDoc); } @@ -879,7 +891,9 @@ namespace MarketAlly.IronJava.Core.Serialization : null; var members = DeserializeList(element.GetProperty("members")); - var nestedTypes = DeserializeList(element.GetProperty("nestedTypes")); + var nestedTypes = element.TryGetProperty("nestedTypes", out var nestedTypesEl) + ? DeserializeList(nestedTypesEl) + : new List(); return new AnnotationDeclaration(location, name, modifiers, annotations, members, nestedTypes, javaDoc); }