@@ -50,11 +50,12 @@ function Compilation(compiler) {
5050module . exports = Compilation ;
5151
5252Compilation . prototype = Object . create ( Tapable . prototype ) ;
53- Compilation . prototype . addModule = function ( module ) {
53+ Compilation . prototype . addModule = function ( module , cacheGroup ) {
54+ cacheGroup = cacheGroup || "m" ;
5455 var identifier = module . identifier ( ) ;
5556 if ( this . _modules [ identifier ] ) return false ;
56- if ( this . cache && this . cache [ "m" + identifier ] ) {
57- var cacheModule = this . cache [ "m" + identifier ] ;
57+ if ( this . cache && this . cache [ cacheGroup + identifier ] ) {
58+ var cacheModule = this . cache [ cacheGroup + identifier ] ;
5859
5960 var rebuild = true ;
6061 if ( ! cacheModule . error && cacheModule . cacheable && this . fileTimestamps && this . contextTimestamps ) {
@@ -77,7 +78,7 @@ Compilation.prototype.addModule = function(module) {
7778 }
7879 }
7980 this . _modules [ identifier ] = module ;
80- if ( this . cache ) this . cache [ "m" + identifier ] = module ;
81+ if ( this . cache ) this . cache [ cacheGroup + identifier ] = module ;
8182 this . modules . push ( module ) ;
8283 return true ;
8384} ;
@@ -111,13 +112,6 @@ Compilation.prototype.buildModule = function(module, callback) {
111112} ;
112113
113114Compilation . prototype . processModuleDependencies = function ( module , callback ) {
114- var errorAndCallback = this . bail ? function errorAndCallback ( err ) {
115- callback ( err ) ;
116- } : function errorAndCallback ( err ) {
117- this . errors . push ( err ) ;
118- callback ( ) ;
119- } . bind ( this ) ;
120-
121115 var dependencies = [ ] ;
122116 function addDependency ( dep ) {
123117 for ( var i = 0 ; i < dependencies . length ; i ++ ) {
@@ -127,13 +121,17 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
127121 dependencies . push ( [ dep ] ) ;
128122 }
129123 function addDependenciesBlock ( block ) {
130- block . dependencies . forEach ( addDependency ) ;
131- block . blocks . forEach ( addDependenciesBlock ) ;
132- block . variables . forEach ( function ( v ) {
124+ if ( block . dependencies ) block . dependencies . forEach ( addDependency ) ;
125+ if ( block . blocks ) block . blocks . forEach ( addDependenciesBlock ) ;
126+ if ( block . variables ) block . variables . forEach ( function ( v ) {
133127 v . dependencies . forEach ( addDependency ) ;
134128 } ) ;
135129 }
136130 addDependenciesBlock ( module ) ;
131+ this . addModuleDependencies ( module , dependencies , this . bail , null , true , callback ) ;
132+ } ;
133+
134+ Compilation . prototype . addModuleDependencies = function ( module , dependencies , bail , cacheGroup , recursive , callback ) {
137135 var factories = [ ] ;
138136 for ( var i = 0 ; i < dependencies . length ; i ++ ) {
139137 var factory = this . dependencyFactories . get ( dependencies [ i ] [ 0 ] . Class ) ;
@@ -153,7 +151,10 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
153151 err . origin = module ;
154152 module . dependenciesErrors . push ( err ) ;
155153 this . errors . push ( err ) ;
156- callback ( ) ;
154+ if ( bail )
155+ callback ( err ) ;
156+ else
157+ callback ( ) ;
157158 } . bind ( this ) ;
158159 var warningAndCallback = function warningAndCallback ( err ) {
159160 err . dependencies = dependencies ;
@@ -184,7 +185,7 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
184185 }
185186
186187 dependantModule . issuer = module . identifier ( ) ;
187- var newModule = this . addModule ( dependantModule ) ;
188+ var newModule = this . addModule ( dependantModule , cacheGroup ) ;
188189
189190 if ( ! newModule ) {
190191 dependantModule = this . getModule ( dependantModule ) ;
@@ -216,7 +217,10 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
216217 dependantModule . addReason ( module , dep ) ;
217218 } ) ;
218219
219- return this . processModuleDependencies ( dependantModule , callback ) ;
220+ if ( recursive )
221+ return this . processModuleDependencies ( dependantModule , callback ) ;
222+ else
223+ return callback ( ) ;
220224 }
221225
222226 dependencies . forEach ( function ( dep ) {
@@ -232,7 +236,10 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
232236 dependantModule . profile . building = afterBuilding - afterFactory ;
233237 }
234238
235- this . processModuleDependencies ( dependantModule , callback ) ;
239+ if ( recursive )
240+ this . processModuleDependencies ( dependantModule , callback ) ;
241+ else
242+ return callback ( ) ;
236243 } . bind ( this ) ) ;
237244
238245 } . bind ( this ) ) ;
0 commit comments