@@ -15,7 +15,7 @@ use rspack_plugin_javascript::{
1515use rspack_util:: { SpanExt , atom:: Atom , json_stringify, swc:: get_swc_comments} ;
1616use swc_core:: {
1717 common:: { Span , Spanned } ,
18- ecma:: ast:: { CallExpr , Ident , MemberExpr , UnaryExpr } ,
18+ ecma:: ast:: { CallExpr , Callee , Ident , MemberExpr , UnaryExpr } ,
1919} ;
2020
2121static RSTEST_MOCK_FIRST_ARG_TAG : & str = "strip the import call from the first arg of mock series" ;
@@ -705,21 +705,31 @@ impl JavascriptParserPlugin for RstestParserPlugin {
705705 & self ,
706706 parser : & mut JavascriptParser ,
707707 call_expr : & CallExpr ,
708- for_name : & str ,
708+ _for_name : & str ,
709709 members : & [ Atom ] ,
710710 _members_optionals : & [ bool ] ,
711711 _member_ranges : & [ Span ] ,
712712 ) -> Option < bool > {
713- // Handle rs.requireActual and rs.importActual calls in any context
714- if ( for_name == "rs" || for_name == "rstest" ) && members. len ( ) == 1 {
715- match members[ 0 ] . as_str ( ) {
716- "requireActual" => {
717- return self . process_require_actual ( parser, call_expr) ;
718- }
719- "importActual" => {
720- return self . process_import_actual ( parser, call_expr) ;
713+ // Handle rs.requireActual and rs.importActual calls
714+ // Extract the variable name from call_expr.callee to handle both:
715+ // 1. Global variables: rs.importActual() or rstest.importActual()
716+ // 2. ESM imports: import { rs } from '@rstest/core'; rs.importActual()
717+ if members. len ( ) == 1
718+ && let Callee :: Expr ( callee) = & call_expr. callee
719+ && let Some ( member_expr) = callee. as_member ( )
720+ && let Some ( ident) = member_expr. obj . as_ident ( )
721+ {
722+ let var_name = ident. sym . as_str ( ) ;
723+ if var_name == "rs" || var_name == "rstest" {
724+ match members[ 0 ] . as_str ( ) {
725+ "requireActual" => {
726+ return self . process_require_actual ( parser, call_expr) ;
727+ }
728+ "importActual" => {
729+ return self . process_import_actual ( parser, call_expr) ;
730+ }
731+ _ => { }
721732 }
722- _ => { }
723733 }
724734 }
725735 None
0 commit comments