@@ -496,7 +496,7 @@ test("ES6 Syntax", async (t) => {
496496 const expected = [
497497 "conditional/module1.js" ,
498498 "conditional/module10.js" ,
499- // "conditional/module11.js", // TODO: see es6-syntax.js
499+ "conditional/module11.js" ,
500500 "conditional/module2.js" ,
501501 "conditional/module3.js" ,
502502 "conditional/module4.js" ,
@@ -674,6 +674,47 @@ test("ChainExpression", (t) => {
674674 `ui5 module` ) ;
675675} ) ;
676676
677+ test ( "LogicalExpression" , ( t ) => {
678+ const content = `
679+ sap.ui.define(['require', 'static/module1'], (require, module1) => {
680+ module1 && sap.ui.require(['conditional/module2']);
681+ module1 || sap.ui.requireSync('conditional/module3');
682+ module1 ?? jQuery.sap.require('conditional.module4');
683+ !module1 && require(['conditional/module5']);
684+
685+ sap.ui.require(['static/module2']) && module1;
686+ sap.ui.requireSync('static/module3') || module1;
687+ jQuery.sap.require('static.module4') ?? module1;
688+ require(['static/module5']) && module1;
689+ });` ;
690+ const info = analyzeString ( content , "modules/LogicalExpression.js" ) ;
691+
692+ const expected = [
693+ "conditional/module2.js" ,
694+ "conditional/module3.js" ,
695+ "conditional/module4.js" ,
696+ "conditional/module5.js" ,
697+ "jquery.sap.global.js" ,
698+ "static/module1.js" ,
699+ "static/module2.js" ,
700+ "static/module3.js" ,
701+ "static/module4.js" ,
702+ "static/module5.js" ,
703+ ] ;
704+ const actual = info . dependencies . sort ( ) ;
705+ t . deepEqual ( actual , expected , "module dependencies should match" ) ;
706+ expected . forEach ( ( dep ) => {
707+ t . is ( info . isConditionalDependency ( dep ) , / ^ c o n d i t i o n a l \/ / . test ( dep ) ,
708+ `only dependencies to 'conditional/*' modules should be conditional (${ dep } )` ) ;
709+ t . is ( info . isImplicitDependency ( dep ) , ! / ^ (?: c o n d i t i o n a l | s t a t i c ) \/ / . test ( dep ) ,
710+ `all dependencies other than 'conditional/*' and 'static/*' should be implicit (${ dep } )` ) ;
711+ } ) ;
712+ t . false ( info . dynamicDependencies ,
713+ `no use of dynamic dependencies should have been detected` ) ;
714+ t . false ( info . rawModule ,
715+ `ui5 module` ) ;
716+ } ) ;
717+
677718test ( "Dynamic import (declare/require)" , async ( t ) => {
678719 const info = await analyze ( "modules/declare_dynamic_require.js" ) ;
679720 t . true ( info . dynamicDependencies ,
0 commit comments