@@ -9,32 +9,28 @@ function powerRun_racket({ id, storeAPI, socket }) {
99 let names = pod . children
1010 . filter ( ( { id } ) => pods [ id ] . type !== "DECK" )
1111 . filter ( ( { id } ) => pods [ id ] . exports )
12- . map ( ( { id } ) =>
13- Object . entries ( pods [ id ] . exports )
14- . filter ( ( [ k , v ] ) => v )
15- . map ( ( [ k , v ] ) => k )
16- ) ;
12+ . map ( ( { id } ) => pods [ id ] . exports ) ;
1713 names = [ ] . concat ( ...names ) ;
1814 let struct_codes = pod . children
19- . filter ( ( { id } ) => pods [ id ] . exports )
2015 . filter (
2116 ( { id } ) =>
22- Object . entries ( pods [ id ] . exports )
23- . filter ( ( [ k , v ] ) => v )
24- . map ( ( [ k , v ] ) => k )
25- . filter ( ( k ) => k . startsWith ( "struct " ) ) . length > 0
17+ pods [ id ] . type === "DECK" && ! pods [ id ] . thundar && pods [ id ] . exports
18+ )
19+ . filter (
20+ ( { id } ) =>
21+ pods [ id ] . exports . filter ( ( k ) => k . startsWith ( "struct:" ) ) . length > 0
2622 )
2723 . map ( ( { id } ) => pods [ id ] . content ) ;
2824 // FIXME reset-module is problematic! it is equivalanet to the following expansion. Why??
2925 // let code = `(enter! #f) (reset-module ${ns} ${names.join(" ")})`;
3026 let struct_names = names
31- . filter ( ( s ) => s . startsWith ( "struct " ) )
27+ . filter ( ( s ) => s . startsWith ( "struct: " ) )
3228 . map ( ( s ) => s . split ( " " ) [ 1 ] ) ;
3329 // FIXME will the struct-out support update?
3430 //
3531 // UPDATE this does not work. Instead, I could insert the real content for
3632 // all exported names maybe?
37- names = names . filter ( ( s ) => ! s . startsWith ( "struct " ) ) ;
33+ names = names . filter ( ( s ) => ! s . startsWith ( "struct: " ) ) ;
3834
3935 // also I need to require for struct:parent
4036 let nses = getUtilNs ( { id, pods } ) ;
@@ -50,21 +46,25 @@ function powerRun_racket({ id, storeAPI, socket }) {
5046 nses . push ( pods [ pod . parent ] . ns ) ;
5147 }
5248
53- // exported subdecks
54- let exported_decks = pods [ id ] . children
55- . filter (
56- ( { id } ) =>
57- pods [ id ] . type === "DECK" && pods [ id ] . exports && pods [ id ] . exports [ "self" ]
49+ let reexports = getReexports ( { id, pods } ) ;
50+ let reexport_code = Object . keys ( reexports )
51+ . map (
52+ ( ns ) => `
53+ (require (only-in '${ ns } ${ reexports [ ns ]
54+ . map ( ( name ) => `${ name } ` )
55+ . join ( " " ) } ))
56+ (provide ${ reexports [ ns ] . map ( ( name ) => `${ name } ` ) . join ( " " ) } )
57+ `
5858 )
59- . map ( ( { id , type } ) => pods [ id ] . ns ) ;
59+ . join ( "\n" ) ;
6060
6161 let code = `
6262(enter! #f)
6363(module ${ pod . ns } racket
6464(require rackunit 'CODEPOD ${ nses . map ( ( s ) => "'" + s ) . join ( " " ) } )
65+ ${ reexport_code }
6566(provide ${ names . join ( " " ) }
6667${ struct_names . map ( ( s ) => `(struct-out ${ s } )` ) . join ( "\n" ) }
67- ${ exported_decks . map ( ( s ) => `(all-from-out '${ s } )` ) . join ( "\n" ) }
6868)
6969${ names . map ( ( name ) => `(define ${ name } "PLACEHOLDER-${ name } ")` ) . join ( "\n" ) }
7070${ struct_codes . join ( "\n" ) }
0 commit comments