@@ -9,20 +9,20 @@ namespace JavaToCSharp.Declarations
99{
1010 public class ClassOrInterfaceDeclarationVisitor : BodyDeclarationVisitor < ClassOrInterfaceDeclaration >
1111 {
12- public override MemberDeclarationSyntax VisitForClass ( ConversionContext context , ClassDeclarationSyntax classSyntax ,
13- ClassOrInterfaceDeclaration declaration )
12+ public override MemberDeclarationSyntax ? VisitForClass ( ConversionContext context , ClassDeclarationSyntax classSyntax ,
13+ ClassOrInterfaceDeclaration declaration )
1414 {
1515 return VisitClassDeclaration ( context , declaration ) ;
1616 }
1717
1818
19- public override MemberDeclarationSyntax VisitForInterface ( ConversionContext context , InterfaceDeclarationSyntax interfaceSyntax ,
20- ClassOrInterfaceDeclaration declaration )
19+ public override MemberDeclarationSyntax ? VisitForInterface ( ConversionContext context , InterfaceDeclarationSyntax interfaceSyntax ,
20+ ClassOrInterfaceDeclaration declaration )
2121 {
2222 return VisitClassDeclaration ( context , declaration ) ;
2323 }
2424
25- public static InterfaceDeclarationSyntax VisitInterfaceDeclaration ( ConversionContext context , ClassOrInterfaceDeclaration javai , bool isNested = false )
25+ public static InterfaceDeclarationSyntax ? VisitInterfaceDeclaration ( ConversionContext context , ClassOrInterfaceDeclaration javai , bool isNested = false )
2626 {
2727 string originalTypeName = javai . getName ( ) ;
2828 string newTypeName = $ "I{ originalTypeName } ";
@@ -63,18 +63,23 @@ public static InterfaceDeclarationSyntax VisitInterfaceDeclaration(ConversionCon
6363 }
6464 }
6565
66- var members = javai . getMembers ( ) . ToList < BodyDeclaration > ( ) ;
66+ var members = javai . getMembers ( ) ? . ToList < BodyDeclaration > ( ) ;
6767
68- foreach ( var member in members )
69- {
70- var syntax = VisitBodyDeclarationForInterface ( context , classSyntax , member ) ;
71- if ( syntax != null ) classSyntax = classSyntax . AddMembers ( syntax . WithJavaComments ( member ) ) ;
72- }
68+ if ( members is not null )
69+ foreach ( var member in members )
70+ {
71+ var syntax = VisitBodyDeclarationForInterface ( context , classSyntax , member ) ;
72+ var memberWithComments = syntax ? . WithJavaComments ( member ) ;
73+ if ( memberWithComments != null )
74+ {
75+ classSyntax = classSyntax . AddMembers ( memberWithComments ) ;
76+ }
77+ }
7378
7479 return classSyntax . WithJavaComments ( javai ) ;
7580 }
7681
77- public static ClassDeclarationSyntax VisitClassDeclaration ( ConversionContext context , ClassOrInterfaceDeclaration javac , bool isNested = false )
82+ public static ClassDeclarationSyntax ? VisitClassDeclaration ( ConversionContext context , ClassOrInterfaceDeclaration javac , bool isNested = false )
7883 {
7984 string name = javac . getName ( ) ;
8085
@@ -125,37 +130,46 @@ public static ClassDeclarationSyntax VisitClassDeclaration(ConversionContext con
125130 }
126131 }
127132
128- var members = javac . getMembers ( ) . ToList < BodyDeclaration > ( ) ;
133+ var members = javac . getMembers ( ) ? . ToList < BodyDeclaration > ( ) ;
129134
130- foreach ( var member in members )
131- {
132- if ( member is ClassOrInterfaceDeclaration childType )
135+ if ( members is not null )
136+ foreach ( var member in members )
133137 {
134- if ( childType . isInterface ( ) )
138+ if ( member is ClassOrInterfaceDeclaration childType )
135139 {
136- var childInt = VisitInterfaceDeclaration ( context , childType , true ) ;
137-
138- classSyntax = classSyntax . AddMembers ( childInt ) ;
140+ if ( childType . isInterface ( ) )
141+ {
142+ var childInt = VisitInterfaceDeclaration ( context , childType , true ) ;
143+ if ( childInt is not null )
144+ {
145+ classSyntax = classSyntax . AddMembers ( childInt ) ;
146+ }
147+ }
148+ else
149+ {
150+ var childClass = VisitClassDeclaration ( context , childType , true ) ;
151+ if ( childClass is not null )
152+ {
153+ classSyntax = classSyntax . AddMembers ( childClass ) ;
154+ }
155+ }
139156 }
140157 else
141158 {
142- var childClass = VisitClassDeclaration ( context , childType , true ) ;
143-
144- classSyntax = classSyntax . AddMembers ( childClass ) ;
159+ var syntax = VisitBodyDeclarationForClass ( context , classSyntax , member ) ;
160+ var withJavaComments = syntax ? . WithJavaComments ( member ) ;
161+ if ( withJavaComments != null )
162+ {
163+ classSyntax = classSyntax . AddMembers ( withJavaComments ) ;
164+ }
145165 }
146- }
147- else
148- {
149- var syntax = VisitBodyDeclarationForClass ( context , classSyntax , member ) ;
150- if ( syntax != null ) classSyntax = classSyntax . AddMembers ( syntax . WithJavaComments ( member ) ) ;
151- }
152166
153- while ( context . PendingAnonymousTypes . Count > 0 )
154- {
155- var anon = context . PendingAnonymousTypes . Dequeue ( ) ;
156- classSyntax = classSyntax . AddMembers ( anon ) ;
167+ while ( context . PendingAnonymousTypes . Count > 0 )
168+ {
169+ var anon = context . PendingAnonymousTypes . Dequeue ( ) ;
170+ classSyntax = classSyntax . AddMembers ( anon ) ;
171+ }
157172 }
158- }
159173
160174 return classSyntax . WithJavaComments ( javac ) ;
161175 }
0 commit comments