File tree Expand file tree Collapse file tree 7 files changed +43
-0
lines changed
crates/swc_ecma_transforms_module
tests/fixture/common/import-meta Expand file tree Collapse file tree 7 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ swc_ecma_transforms_module : patch
3+ ---
4+
5+ fix(es/module): Support optional chaining in ` import.meta `
Original file line number Diff line number Diff line change @@ -364,6 +364,21 @@ where
364364 _ => { }
365365 }
366366 }
367+ Expr :: OptChain ( OptChainExpr { base, .. } ) if !self . config . preserve_import_meta => {
368+ if let OptChainBase :: Member ( member) = & mut * * base {
369+ if member
370+ . obj
371+ . as_meta_prop ( )
372+ . is_some_and ( |meta_prop| meta_prop. kind == MetaPropKind :: ImportMeta )
373+ {
374+ * n = member. take ( ) . into ( ) ;
375+ n. visit_mut_with ( self ) ;
376+ return ;
377+ }
378+ } ;
379+
380+ n. visit_mut_children_with ( self ) ;
381+ }
367382 _ => n. visit_mut_children_with ( self ) ,
368383 }
369384 }
Original file line number Diff line number Diff line change @@ -271,6 +271,21 @@ impl VisitMut for Cjs {
271271 _ => { }
272272 }
273273 }
274+ Expr :: OptChain ( OptChainExpr { base, .. } ) if !self . config . preserve_import_meta => {
275+ if let OptChainBase :: Member ( member) = & mut * * base {
276+ if member
277+ . obj
278+ . as_meta_prop ( )
279+ . is_some_and ( |meta_prop| meta_prop. kind == MetaPropKind :: ImportMeta )
280+ {
281+ * n = member. take ( ) . into ( ) ;
282+ n. visit_mut_with ( self ) ;
283+ return ;
284+ }
285+ } ;
286+
287+ n. visit_mut_children_with ( self ) ;
288+ }
274289 _ => n. visit_mut_children_with ( self ) ,
275290 }
276291 }
Original file line number Diff line number Diff line change 11const react = import . meta. resolve ( "react" ) ;
22const url = import . meta. url ;
3+ const urlMaybe = import . meta?. url ;
34const filename = import . meta. filename ;
45const dirname = import . meta. dirname ;
56const main = import . meta. main ;
67
8+ foo ?. bar ( import . meta. url ) ;
79console . log ( react ) ;
810console . log ( url ) ;
911console . log ( filename ) ;
Original file line number Diff line number Diff line change @@ -5,9 +5,11 @@ define([
55 "use strict" ;
66 const react = require . toUrl ( "react" ) ;
77 const url = new URL ( module . uri , document . baseURI ) . href ;
8+ const urlMaybe = new URL ( module . uri , document . baseURI ) . href ;
89 const filename = module . uri . split ( "/" ) . pop ( ) ;
910 const dirname = require . toUrl ( "." ) ;
1011 const main = module . id == "main" ;
12+ foo ?. bar ( new URL ( module . uri , document . baseURI ) . href ) ;
1113 console . log ( react ) ;
1214 console . log ( url ) ;
1315 console . log ( filename ) ;
Original file line number Diff line number Diff line change 11"use strict" ;
22const react = require . resolve ( "react" ) ;
33const url = require ( "url" ) . pathToFileURL ( __filename ) . toString ( ) ;
4+ const urlMaybe = require ( "url" ) . pathToFileURL ( __filename ) . toString ( ) ;
45const filename = __filename ;
56const dirname = __dirname ;
67const main = require . main == module ;
8+ foo ?. bar ( require ( "url" ) . pathToFileURL ( __filename ) . toString ( ) ) ;
79console . log ( react ) ;
810console . log ( url ) ;
911console . log ( filename ) ;
Original file line number Diff line number Diff line change 66 "use strict" ;
77 const react = import . meta. resolve ( "react" ) ;
88 const url = import . meta. url ;
9+ const urlMaybe = import . meta?. url ;
910 const filename = import . meta. filename ;
1011 const dirname = import . meta. dirname ;
1112 const main = import . meta. main ;
13+ foo ?. bar ( import . meta. url ) ;
1214 console . log ( react ) ;
1315 console . log ( url ) ;
1416 console . log ( filename ) ;
You can’t perform that action at this time.
0 commit comments