@@ -1340,6 +1340,18 @@ ClazzLoader.tryToLoadNext = function (file) {
13401340 ClazzLoader . updateNode ( n ) ;
13411341 lastNode = n ;
13421342 }
1343+ var dList = [ ] ;
1344+ while ( ( n = ClazzLoader . findNextMustClass ( ClazzLoader . clazzTreeRoot , ClazzNode . STATUS_DECLARED ) ) != null ) {
1345+ dList [ dList . length ] = n ;
1346+ n . status = ClazzNode . STATUS_OPTIONALS_LOADED ;
1347+ }
1348+ while ( ( n = ClazzLoader . findNextOptionalClass ( ClazzNode . STATUS_DECLARED ) ) != null ) {
1349+ dList [ dList . length ] = n ;
1350+ n . status = ClazzNode . STATUS_OPTIONALS_LOADED ;
1351+ }
1352+ for ( var i = 0 ; i < dList . length ; i ++ ) {
1353+ ClazzLoader . updateNode ( dList [ i ] ) ;
1354+ }
13431355
13441356 /*
13451357 * It seems ClazzLoader#globalLoaded is seldom overrided.
@@ -1657,7 +1669,8 @@ ClazzLoader.findNextMustClass = function (node, status) {
16571669 var n = node . musts [ i ] ;
16581670 if ( n . status == status && ( status != ClazzNode . STATUS_KNOWN
16591671 || ClazzLoader . loadedScripts [ n . path ] != true )
1660- && ! ClazzLoader . isClassDefined ( n . name ) ) {
1672+ && ( status == ClazzNode . STATUS_DECLARED
1673+ || ! ClazzLoader . isClassDefined ( n . name ) ) ) {
16611674 return n ;
16621675 } else {
16631676 var nn = ClazzLoader . findNextMustClass ( n , status ) ;
@@ -1669,7 +1682,8 @@ ClazzLoader.findNextMustClass = function (node, status) {
16691682 }
16701683 if ( node . status == status && ( status != ClazzNode . STATUS_KNOWN
16711684 || ClazzLoader . loadedScripts [ node . path ] != true )
1672- && ! ClazzLoader . isClassDefined ( node . name ) ) {
1685+ && ( status == ClazzNode . STATUS_DECLARED
1686+ || ! ClazzLoader . isClassDefined ( node . name ) ) ) {
16731687 return node ;
16741688 }
16751689 }
@@ -1711,7 +1725,8 @@ ClazzLoader.findNodeNextOptionalClass = function (node, status) {
17111725 var n = ClazzLoader . searchClassArray ( node . musts , rnd , status ) ;
17121726 if ( n != null && ( status != ClazzNode . STATUS_KNOWN
17131727 || ClazzLoader . loadedScripts [ n . path ] != true )
1714- && ! ClazzLoader . isClassDefined ( n . name ) ) {
1728+ && ( status == ClazzNode . STATUS_DECLARED
1729+ || ! ClazzLoader . isClassDefined ( n . name ) ) ) {
17151730 return n ;
17161731 }
17171732 }
@@ -1720,14 +1735,16 @@ ClazzLoader.findNodeNextOptionalClass = function (node, status) {
17201735 var n = ClazzLoader . searchClassArray ( node . optionals , rnd , status ) ;
17211736 if ( n != null && ( status != ClazzNode . STATUS_KNOWN
17221737 || ClazzLoader . loadedScripts [ n . path ] != true )
1723- && ! ClazzLoader . isClassDefined ( n . name ) ) {
1738+ && ( status == ClazzNode . STATUS_DECLARED
1739+ || ! ClazzLoader . isClassDefined ( n . name ) ) ) {
17241740 return n ;
17251741 }
17261742 }
17271743 // search itself
17281744 if ( node . status == status && ( status != ClazzNode . STATUS_KNOWN
17291745 || ClazzLoader . loadedScripts [ node . path ] != true )
1730- && ! ClazzLoader . isClassDefined ( node . name ) ) {
1746+ && ( status == ClazzNode . STATUS_DECLARED
1747+ || ! ClazzLoader . isClassDefined ( node . name ) ) ) {
17311748 return node ;
17321749 }
17331750 return null ;
@@ -1739,7 +1756,8 @@ ClazzLoader.searchClassArray = function (arr, rnd, status) {
17391756 var n = arr [ i ] ;
17401757 if ( n . status == status && ( status != ClazzNode . STATUS_KNOWN
17411758 || ClazzLoader . loadedScripts [ n . path ] != true )
1742- && ! ClazzLoader . isClassDefined ( n . name ) ) {
1759+ && ( status == ClazzNode . STATUS_DECLARED
1760+ || ! ClazzLoader . isClassDefined ( n . name ) ) ) {
17431761 return n ;
17441762 } else {
17451763 if ( n . random == rnd ) {
0 commit comments