From 2cc1e3d2836eb64caa82fbbb24f5b1ef3d7041c2 Mon Sep 17 00:00:00 2001 From: Dave Friedel Date: Wed, 23 Jul 2025 05:10:45 -0400 Subject: [PATCH] new nested types --- IronJava.Core/AST/Nodes/TypeDeclarations.cs | 24 +++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/IronJava.Core/AST/Nodes/TypeDeclarations.cs b/IronJava.Core/AST/Nodes/TypeDeclarations.cs index db2b0cc..b679e23 100644 --- a/IronJava.Core/AST/Nodes/TypeDeclarations.cs +++ b/IronJava.Core/AST/Nodes/TypeDeclarations.cs @@ -48,6 +48,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes public TypeReference? SuperClass { get; } public IReadOnlyList Interfaces { get; } public IReadOnlyList Members { get; } + public IReadOnlyList NestedTypes { get; } public bool IsRecord { get; } public ClassDeclaration( @@ -59,6 +60,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes TypeReference? superClass, IReadOnlyList interfaces, IReadOnlyList members, + IReadOnlyList nestedTypes, JavaDoc? javaDoc, bool isRecord = false) : base(location, name, modifiers, annotations, typeParameters, javaDoc) @@ -66,14 +68,16 @@ namespace MarketAlly.IronJava.Core.AST.Nodes SuperClass = superClass; Interfaces = interfaces; Members = members; + NestedTypes = nestedTypes; IsRecord = isRecord; if (superClass != null) AddChild(superClass); AddChildren(interfaces); AddChildren(members); + AddChildren(nestedTypes); } - public override IEnumerable Body => Members; + public override IEnumerable Body => Members.Cast().Concat(NestedTypes); public override T Accept(IJavaVisitor visitor) => visitor.VisitClassDeclaration(this); public override void Accept(IJavaVisitor visitor) => visitor.VisitClassDeclaration(this); @@ -86,6 +90,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes { public IReadOnlyList ExtendedInterfaces { get; } public IReadOnlyList Members { get; } + public IReadOnlyList NestedTypes { get; } public InterfaceDeclaration( SourceRange location, @@ -95,17 +100,20 @@ namespace MarketAlly.IronJava.Core.AST.Nodes IReadOnlyList typeParameters, IReadOnlyList extendedInterfaces, IReadOnlyList members, + IReadOnlyList nestedTypes, JavaDoc? javaDoc) : base(location, name, modifiers, annotations, typeParameters, javaDoc) { ExtendedInterfaces = extendedInterfaces; Members = members; + NestedTypes = nestedTypes; AddChildren(extendedInterfaces); AddChildren(members); + AddChildren(nestedTypes); } - public override IEnumerable Body => Members; + public override IEnumerable Body => Members.Cast().Concat(NestedTypes); public override T Accept(IJavaVisitor visitor) => visitor.VisitInterfaceDeclaration(this); public override void Accept(IJavaVisitor visitor) => visitor.VisitInterfaceDeclaration(this); @@ -119,6 +127,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes public IReadOnlyList Interfaces { get; } public IReadOnlyList Constants { get; } public IReadOnlyList Members { get; } + public IReadOnlyList NestedTypes { get; } public EnumDeclaration( SourceRange location, @@ -128,19 +137,22 @@ namespace MarketAlly.IronJava.Core.AST.Nodes IReadOnlyList interfaces, IReadOnlyList constants, IReadOnlyList members, + IReadOnlyList nestedTypes, JavaDoc? javaDoc) : base(location, name, modifiers, annotations, new List(), javaDoc) { Interfaces = interfaces; Constants = constants; Members = members; + NestedTypes = nestedTypes; AddChildren(interfaces); AddChildren(constants); AddChildren(members); + AddChildren(nestedTypes); } - public override IEnumerable Body => Constants.Cast().Concat(Members); + public override IEnumerable Body => Constants.Cast().Concat(Members).Concat(NestedTypes); public override T Accept(IJavaVisitor visitor) => visitor.VisitEnumDeclaration(this); public override void Accept(IJavaVisitor visitor) => visitor.VisitEnumDeclaration(this); @@ -152,6 +164,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes public class AnnotationDeclaration : TypeDeclaration { public IReadOnlyList Members { get; } + public IReadOnlyList NestedTypes { get; } public AnnotationDeclaration( SourceRange location, @@ -159,14 +172,17 @@ namespace MarketAlly.IronJava.Core.AST.Nodes Modifiers modifiers, IReadOnlyList annotations, IReadOnlyList members, + IReadOnlyList nestedTypes, JavaDoc? javaDoc) : base(location, name, modifiers, annotations, new List(), javaDoc) { Members = members; + NestedTypes = nestedTypes; AddChildren(members); + AddChildren(nestedTypes); } - public override IEnumerable Body => Members; + public override IEnumerable Body => Members.Cast().Concat(NestedTypes); public override T Accept(IJavaVisitor visitor) => visitor.VisitAnnotationDeclaration(this); public override void Accept(IJavaVisitor visitor) => visitor.VisitAnnotationDeclaration(this);