|  | @@ -145,9 +145,7 @@ AmberC.prototype.main = function(configuration, finished_callback) {
 | 
	
		
			
				|  |  |  	.then(collect_st_files, logError)
 | 
	
		
			
				|  |  |  	.then(collect_js_files, logError)
 | 
	
		
			
				|  |  |  	.then(resolve_kernel, logError)
 | 
	
		
			
				|  |  | -	.then(resolve_compiler, logError)
 | 
	
		
			
				|  |  | -	.then(create_compiler(configuration), logError)
 | 
	
		
			
				|  |  | -	.then(function() {return configuration;})
 | 
	
		
			
				|  |  | +	.then(create_compiler, logError)
 | 
	
		
			
				|  |  |  	.then(compile, logError)
 | 
	
		
			
				|  |  |  	.then(category_export, logError)
 | 
	
		
			
				|  |  |  	.then(verify, logError)
 | 
	
	
		
			
				|  | @@ -300,35 +298,20 @@ function resolve_kernel(configuration) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * Resolve .js files needed by compiler.
 | 
	
		
			
				|  |  | - * Returns a Promise which resolves with an array of all compiler related files.
 | 
	
		
			
				|  |  | + * Resolve .js files needed by compiler, read and eval() them.
 | 
	
		
			
				|  |  | + * The finished Compiler gets stored in configuration.smalltalk.
 | 
	
		
			
				|  |  | + * Returns a Promise object which resolves into configuration.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function resolve_compiler(configuration) {
 | 
	
		
			
				|  |  | -	// Resolve compiler libraries
 | 
	
		
			
				|  |  | -	var compiler_files = configuration.compiler_libraries.concat(configuration.load);
 | 
	
		
			
				|  |  | +function create_compiler(configuration) {
 | 
	
		
			
				|  |  |  	return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | +		var compiler_files = configuration.compiler_libraries.concat(configuration.load);
 | 
	
		
			
				|  |  |  		Promise.all(
 | 
	
		
			
				|  |  |  			compiler_files.map(function(file) {
 | 
	
		
			
				|  |  |  				return resolve_js(file, configuration, resolve);
 | 
	
		
			
				|  |  |  			})
 | 
	
		
			
				|  |  | -		).then(function(compilerFiles) {
 | 
	
		
			
				|  |  | -			resolve(compilerFiles);
 | 
	
		
			
				|  |  | -		}, function(error) {
 | 
	
		
			
				|  |  | -			reject(error);
 | 
	
		
			
				|  |  | -		});
 | 
	
		
			
				|  |  | -	});
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * Read all .js files needed by compiler and eval() them.
 | 
	
		
			
				|  |  | - * The finished Compiler gets stored in configuration.smalltalk.
 | 
	
		
			
				|  |  | - * Returns a Promise object.
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -function create_compiler(configuration) {
 | 
	
		
			
				|  |  | -	return function(compilerFilesArray) {
 | 
	
		
			
				|  |  | -		return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  | -			Promise.all(
 | 
	
		
			
				|  |  | +		)
 | 
	
		
			
				|  |  | +		.then(function(compilerFilesArray) {
 | 
	
		
			
				|  |  | +			return Promise.all(
 | 
	
		
			
				|  |  |  				compilerFilesArray.map(function(file) {
 | 
	
		
			
				|  |  |  					return new Promise(function(resolve, reject) {
 | 
	
		
			
				|  |  |  						console.log('Loading file: ' + file);
 | 
	
	
		
			
				|  | @@ -340,39 +323,39 @@ function create_compiler(configuration) {
 | 
	
		
			
				|  |  |  						});
 | 
	
		
			
				|  |  |  					});
 | 
	
		
			
				|  |  |  				})
 | 
	
		
			
				|  |  | -			).then(function(files) {
 | 
	
		
			
				|  |  | -				var builder = createConcatenator();
 | 
	
		
			
				|  |  | -				builder.add('(function() {');
 | 
	
		
			
				|  |  | -				builder.start();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				files.forEach(function(data) {
 | 
	
		
			
				|  |  | -					// data is an array where index 0 is the error code and index 1 contains the data
 | 
	
		
			
				|  |  | -					builder.add(data);
 | 
	
		
			
				|  |  | -					// matches and returns the "module_id" string in the AMD definition: define("module_id", ...)
 | 
	
		
			
				|  |  | -					var match = ('' + data).match(/^define\("([^"]*)"/);
 | 
	
		
			
				|  |  | -					if (match) {
 | 
	
		
			
				|  |  | -						builder.addId(match[1]);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				});
 | 
	
		
			
				|  |  | -				// store the generated smalltalk env in configuration.smalltalk
 | 
	
		
			
				|  |  | -				builder.finish('configuration.smalltalk = smalltalk;');
 | 
	
		
			
				|  |  | -				builder.add('})();');
 | 
	
		
			
				|  |  | +			)
 | 
	
		
			
				|  |  | +		}).then(function(files) {
 | 
	
		
			
				|  |  | +			var builder = createConcatenator();
 | 
	
		
			
				|  |  | +			builder.add('(function() {');
 | 
	
		
			
				|  |  | +			builder.start();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			files.forEach(function(data) {
 | 
	
		
			
				|  |  | +				// data is an array where index 0 is the error code and index 1 contains the data
 | 
	
		
			
				|  |  | +				builder.add(data);
 | 
	
		
			
				|  |  | +				// matches and returns the "module_id" string in the AMD definition: define("module_id", ...)
 | 
	
		
			
				|  |  | +				var match = ('' + data).match(/^define\("([^"]*)"/);
 | 
	
		
			
				|  |  | +				if (match) {
 | 
	
		
			
				|  |  | +					builder.addId(match[1]);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			});
 | 
	
		
			
				|  |  | +			// store the generated smalltalk env in configuration.smalltalk
 | 
	
		
			
				|  |  | +			builder.finish('configuration.smalltalk = smalltalk;');
 | 
	
		
			
				|  |  | +			builder.add('})();');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				eval(builder.toString());
 | 
	
		
			
				|  |  | -				console.log('Compiler loaded');
 | 
	
		
			
				|  |  | -				configuration.smalltalk.ErrorHandler._setCurrent_(configuration.smalltalk.RethrowErrorHandler._new());
 | 
	
		
			
				|  |  | +			eval(builder.toString());
 | 
	
		
			
				|  |  | +			console.log('Compiler loaded');
 | 
	
		
			
				|  |  | +			configuration.smalltalk.ErrorHandler._setCurrent_(configuration.smalltalk.RethrowErrorHandler._new());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				if(0 !== configuration.jsGlobals.length) {
 | 
	
		
			
				|  |  | -					var jsGlobalVariables = configuration.smalltalk.globalJsVariables;
 | 
	
		
			
				|  |  | -					jsGlobalVariables.push.apply(jsGlobalVariables, configuration.jsGlobals);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | +			if(0 !== configuration.jsGlobals.length) {
 | 
	
		
			
				|  |  | +				var jsGlobalVariables = configuration.smalltalk.globalJsVariables;
 | 
	
		
			
				|  |  | +				jsGlobalVariables.push.apply(jsGlobalVariables, configuration.jsGlobals);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				resolve(true);
 | 
	
		
			
				|  |  | -			}, function(error) {
 | 
	
		
			
				|  |  | -				reject(Error('Error creating compiler'));
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | +			resolve(configuration);
 | 
	
		
			
				|  |  | +		}, function(error) {
 | 
	
		
			
				|  |  | +			reject(Error('Error creating compiler'));
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	});
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |