@@ -6,19 +6,18 @@ import type { JavaGoody } from "./parsers/javaGoodyParser";
66const ADVENTURE_PACK_CLASS_NAME = "AP" ;
77
88export function mergeJavaCode ( goodies : Iterable < ReadonlyDeep < JavaGoody > > ) {
9- const classes : Record < string , { code : string [ ] ; modifiers : Set < string > } > =
10- { } ;
9+ const classes : Record < string , { code : string [ ] ; declaration : string } > = { } ;
1110 for ( const goody of goodies ) {
1211 for ( const className of Object . keys ( goody . codeByClass ) ) {
1312 invariant (
1413 classes [ className ] == null || className === ADVENTURE_PACK_CLASS_NAME ,
1514 `Only the ${ ADVENTURE_PACK_CLASS_NAME } class can exist in multiple goodies!` ,
1615 ) ;
1716
18- classes [ className ] ??= { code : [ ] , modifiers : new Set ( ) } ;
19- for ( const modifier of goody . codeByClass [ className ] . modifiers ) {
20- classes [ className ] . modifiers . add ( modifier ) ;
21- }
17+ classes [ className ] ??= {
18+ code : [ ] ,
19+ declaration : goody . codeByClass [ className ] . declaration ,
20+ } ;
2221 classes [ className ] . code . push ( goody . codeByClass [ className ] . code ) ;
2322 }
2423 }
@@ -32,8 +31,13 @@ export function mergeJavaCode(goodies: Iterable<ReadonlyDeep<JavaGoody>>) {
3231
3332 const res : string [ ] = [ ] ;
3433 for ( const className of Object . keys ( classes ) ) {
34+ const classData = classes [ className ] ;
35+ const codeSections = classData . code . filter ( Boolean ) ;
36+
3537 res . push (
36- `${ [ ...classes [ className ] . modifiers , "class" , className ] . join ( " " ) } {\n${ classes [ className ] . code . map ( ( section ) => section + "\n" ) . join ( "\n" ) } }` ,
38+ codeSections . length > 0
39+ ? `${ classData . declaration } \n${ codeSections . map ( ( codeSection ) => codeSection + "\n" ) . join ( "\n" ) } }`
40+ : classData . declaration + "}" ,
3741 ) ;
3842 }
3943
0 commit comments