new nested types

This commit is contained in:
2025-07-23 05:10:45 -04:00
parent 7708c479e8
commit 2cc1e3d283

View File

@@ -48,6 +48,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
public TypeReference? SuperClass { get; } public TypeReference? SuperClass { get; }
public IReadOnlyList<TypeReference> Interfaces { get; } public IReadOnlyList<TypeReference> Interfaces { get; }
public IReadOnlyList<MemberDeclaration> Members { get; } public IReadOnlyList<MemberDeclaration> Members { get; }
public IReadOnlyList<TypeDeclaration> NestedTypes { get; }
public bool IsRecord { get; } public bool IsRecord { get; }
public ClassDeclaration( public ClassDeclaration(
@@ -59,6 +60,7 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
TypeReference? superClass, TypeReference? superClass,
IReadOnlyList<TypeReference> interfaces, IReadOnlyList<TypeReference> interfaces,
IReadOnlyList<MemberDeclaration> members, IReadOnlyList<MemberDeclaration> members,
IReadOnlyList<TypeDeclaration> nestedTypes,
JavaDoc? javaDoc, JavaDoc? javaDoc,
bool isRecord = false) bool isRecord = false)
: base(location, name, modifiers, annotations, typeParameters, javaDoc) : base(location, name, modifiers, annotations, typeParameters, javaDoc)
@@ -66,14 +68,16 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
SuperClass = superClass; SuperClass = superClass;
Interfaces = interfaces; Interfaces = interfaces;
Members = members; Members = members;
NestedTypes = nestedTypes;
IsRecord = isRecord; IsRecord = isRecord;
if (superClass != null) AddChild(superClass); if (superClass != null) AddChild(superClass);
AddChildren(interfaces); AddChildren(interfaces);
AddChildren(members); AddChildren(members);
AddChildren(nestedTypes);
} }
public override IEnumerable<JavaNode> Body => Members; public override IEnumerable<JavaNode> Body => Members.Cast<JavaNode>().Concat(NestedTypes);
public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitClassDeclaration(this); public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitClassDeclaration(this);
public override void 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<TypeReference> ExtendedInterfaces { get; } public IReadOnlyList<TypeReference> ExtendedInterfaces { get; }
public IReadOnlyList<MemberDeclaration> Members { get; } public IReadOnlyList<MemberDeclaration> Members { get; }
public IReadOnlyList<TypeDeclaration> NestedTypes { get; }
public InterfaceDeclaration( public InterfaceDeclaration(
SourceRange location, SourceRange location,
@@ -95,17 +100,20 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
IReadOnlyList<TypeParameter> typeParameters, IReadOnlyList<TypeParameter> typeParameters,
IReadOnlyList<TypeReference> extendedInterfaces, IReadOnlyList<TypeReference> extendedInterfaces,
IReadOnlyList<MemberDeclaration> members, IReadOnlyList<MemberDeclaration> members,
IReadOnlyList<TypeDeclaration> nestedTypes,
JavaDoc? javaDoc) JavaDoc? javaDoc)
: base(location, name, modifiers, annotations, typeParameters, javaDoc) : base(location, name, modifiers, annotations, typeParameters, javaDoc)
{ {
ExtendedInterfaces = extendedInterfaces; ExtendedInterfaces = extendedInterfaces;
Members = members; Members = members;
NestedTypes = nestedTypes;
AddChildren(extendedInterfaces); AddChildren(extendedInterfaces);
AddChildren(members); AddChildren(members);
AddChildren(nestedTypes);
} }
public override IEnumerable<JavaNode> Body => Members; public override IEnumerable<JavaNode> Body => Members.Cast<JavaNode>().Concat(NestedTypes);
public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitInterfaceDeclaration(this); public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitInterfaceDeclaration(this);
public override void 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<TypeReference> Interfaces { get; } public IReadOnlyList<TypeReference> Interfaces { get; }
public IReadOnlyList<EnumConstant> Constants { get; } public IReadOnlyList<EnumConstant> Constants { get; }
public IReadOnlyList<MemberDeclaration> Members { get; } public IReadOnlyList<MemberDeclaration> Members { get; }
public IReadOnlyList<TypeDeclaration> NestedTypes { get; }
public EnumDeclaration( public EnumDeclaration(
SourceRange location, SourceRange location,
@@ -128,19 +137,22 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
IReadOnlyList<TypeReference> interfaces, IReadOnlyList<TypeReference> interfaces,
IReadOnlyList<EnumConstant> constants, IReadOnlyList<EnumConstant> constants,
IReadOnlyList<MemberDeclaration> members, IReadOnlyList<MemberDeclaration> members,
IReadOnlyList<TypeDeclaration> nestedTypes,
JavaDoc? javaDoc) JavaDoc? javaDoc)
: base(location, name, modifiers, annotations, new List<TypeParameter>(), javaDoc) : base(location, name, modifiers, annotations, new List<TypeParameter>(), javaDoc)
{ {
Interfaces = interfaces; Interfaces = interfaces;
Constants = constants; Constants = constants;
Members = members; Members = members;
NestedTypes = nestedTypes;
AddChildren(interfaces); AddChildren(interfaces);
AddChildren(constants); AddChildren(constants);
AddChildren(members); AddChildren(members);
AddChildren(nestedTypes);
} }
public override IEnumerable<JavaNode> Body => Constants.Cast<JavaNode>().Concat(Members); public override IEnumerable<JavaNode> Body => Constants.Cast<JavaNode>().Concat(Members).Concat(NestedTypes);
public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitEnumDeclaration(this); public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitEnumDeclaration(this);
public override void 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 class AnnotationDeclaration : TypeDeclaration
{ {
public IReadOnlyList<AnnotationMember> Members { get; } public IReadOnlyList<AnnotationMember> Members { get; }
public IReadOnlyList<TypeDeclaration> NestedTypes { get; }
public AnnotationDeclaration( public AnnotationDeclaration(
SourceRange location, SourceRange location,
@@ -159,14 +172,17 @@ namespace MarketAlly.IronJava.Core.AST.Nodes
Modifiers modifiers, Modifiers modifiers,
IReadOnlyList<Annotation> annotations, IReadOnlyList<Annotation> annotations,
IReadOnlyList<AnnotationMember> members, IReadOnlyList<AnnotationMember> members,
IReadOnlyList<TypeDeclaration> nestedTypes,
JavaDoc? javaDoc) JavaDoc? javaDoc)
: base(location, name, modifiers, annotations, new List<TypeParameter>(), javaDoc) : base(location, name, modifiers, annotations, new List<TypeParameter>(), javaDoc)
{ {
Members = members; Members = members;
NestedTypes = nestedTypes;
AddChildren(members); AddChildren(members);
AddChildren(nestedTypes);
} }
public override IEnumerable<JavaNode> Body => Members; public override IEnumerable<JavaNode> Body => Members.Cast<JavaNode>().Concat(NestedTypes);
public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitAnnotationDeclaration(this); public override T Accept<T>(IJavaVisitor<T> visitor) => visitor.VisitAnnotationDeclaration(this);
public override void Accept(IJavaVisitor visitor) => visitor.VisitAnnotationDeclaration(this); public override void Accept(IJavaVisitor visitor) => visitor.VisitAnnotationDeclaration(this);