@@ -54,7 +54,7 @@ public static class JavaToCSharpConverter
5454 var package = result . getPackageDeclaration ( ) . FromOptional < PackageDeclaration > ( ) ;
5555
5656 var rootMembers = new List < MemberDeclarationSyntax > ( ) ;
57- NamespaceDeclarationSyntax ? namespaceSyntax = null ;
57+ NameSyntax ? namespaceNameSyntax = null ;
5858
5959 if ( options . IncludeNamespace )
6060 {
@@ -72,7 +72,7 @@ public static class JavaToCSharpConverter
7272
7373 packageName = TypeHelper . Capitalize ( packageName ) ;
7474
75- namespaceSyntax = SyntaxFactory . NamespaceDeclaration ( SyntaxFactory . ParseName ( packageName ) ) ;
75+ namespaceNameSyntax = SyntaxFactory . ParseName ( packageName ) ;
7676 }
7777
7878 foreach ( var type in types )
@@ -82,57 +82,55 @@ public static class JavaToCSharpConverter
8282 if ( classOrIntType . isInterface ( ) )
8383 {
8484 var interfaceSyntax = ClassOrInterfaceDeclarationVisitor . VisitInterfaceDeclaration ( context , classOrIntType ) ;
85-
86- if ( namespaceSyntax != null )
87- {
88- namespaceSyntax = namespaceSyntax . AddMembers ( interfaceSyntax ) ;
89- }
90- else
91- {
92- rootMembers . Add ( interfaceSyntax ) ;
93- }
85+ rootMembers . Add ( interfaceSyntax . NormalizeWhitespace ( ) . WithTrailingNewLines ( ) ) ;
9486 }
9587 else
9688 {
9789 var classSyntax = ClassOrInterfaceDeclarationVisitor . VisitClassDeclaration ( context , classOrIntType ) ;
98-
99- if ( namespaceSyntax != null )
100- {
101- namespaceSyntax = namespaceSyntax . AddMembers ( classSyntax ) ;
102- }
103- else
104- {
105- rootMembers . Add ( classSyntax ) ;
106- }
90+ rootMembers . Add ( classSyntax . NormalizeWhitespace ( ) . WithTrailingNewLines ( ) ) ;
10791 }
10892 }
10993 else if ( type is EnumDeclaration enumType )
11094 {
111- var classSyntax = EnumDeclarationVisitor . VisitEnumDeclaration ( context , enumType ) ;
95+ var enumSyntax = EnumDeclarationVisitor . VisitEnumDeclaration ( context , enumType ) ;
96+ rootMembers . Add ( enumSyntax . NormalizeWhitespace ( ) . WithTrailingNewLines ( ) ) ;
97+ }
98+ }
11299
113- if ( namespaceSyntax != null )
114- {
115- namespaceSyntax = namespaceSyntax . AddMembers ( classSyntax ) ;
116- }
117- else
118- {
119- rootMembers . Add ( classSyntax ) ;
120- }
100+ if ( rootMembers . Count > 1 )
101+ {
102+ for ( int i = 1 ; i < rootMembers . Count ; i ++ )
103+ {
104+ rootMembers [ i ] = rootMembers [ i ] . WithLeadingNewLines ( ) ;
121105 }
122106 }
123107
124- if ( namespaceSyntax != null )
108+ if ( namespaceNameSyntax != null )
125109 {
126- rootMembers . Add ( namespaceSyntax ) ;
110+ if ( options . UseFileScopedNamespaces && rootMembers . Count > 0 )
111+ {
112+ rootMembers [ 0 ] = rootMembers [ 0 ] . WithLeadingNewLines ( ) ;
113+ }
114+
115+ MemberDeclarationSyntax namespaceSyntax =
116+ options . UseFileScopedNamespaces
117+ ? SyntaxFactory . FileScopedNamespaceDeclaration ( namespaceNameSyntax )
118+ . NormalizeWhitespace ( )
119+ . WithTrailingNewLines ( )
120+ . WithMembers ( SyntaxFactory . List ( rootMembers ) )
121+ : SyntaxFactory . NamespaceDeclaration ( namespaceNameSyntax )
122+ . WithMembers ( SyntaxFactory . List ( rootMembers ) )
123+ . NormalizeWhitespace ( ) ;
124+
125+ rootMembers = [ namespaceSyntax ] ;
127126 }
128127
129128 var root = SyntaxFactory . CompilationUnit (
130129 externs : [ ] ,
131- usings : SyntaxFactory . List ( UsingsHelper . GetUsings ( context , imports , options , rootMembers , namespaceSyntax ) ) ,
130+ usings : SyntaxFactory . List ( UsingsHelper . GetUsings ( context , imports , options , namespaceNameSyntax ) ) ,
132131 attributeLists : [ ] ,
133132 members : SyntaxFactory . List ( rootMembers )
134- )
135- . NormalizeWhitespace ( ) ;
133+ ) ;
136134
137135 root = root . WithPackageFileComments ( context , result , package ) ;
138136
0 commit comments