57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
var test = function (arg1, arg2) { return arg2; };
 | 
						|
 | 
						|
try {
 | 
						|
	Object.defineProperty(test, "length", {
 | 
						|
		configurable: true,
 | 
						|
		writable: false,
 | 
						|
		enumerable: false,
 | 
						|
		value: 1
 | 
						|
	});
 | 
						|
}
 | 
						|
catch (ignore) {}
 | 
						|
 | 
						|
if (test.length === 1) {
 | 
						|
	// ES2015+
 | 
						|
	var desc = { configurable: true, writable: false, enumerable: false };
 | 
						|
	module.exports = function (length, fn) {
 | 
						|
		if (fn.length === length) return fn;
 | 
						|
		desc.value = length;
 | 
						|
		return Object.defineProperty(fn, "length", desc);
 | 
						|
	};
 | 
						|
	return;
 | 
						|
}
 | 
						|
 | 
						|
module.exports = function (length, fn) {
 | 
						|
	if (fn.length === length) return fn;
 | 
						|
	switch (length) {
 | 
						|
		case 0:
 | 
						|
			return function () { return fn.apply(this, arguments); };
 | 
						|
		case 1:
 | 
						|
			return function (ignored1) { return fn.apply(this, arguments); };
 | 
						|
		case 2:
 | 
						|
			return function (ignored1, ignored2) { return fn.apply(this, arguments); };
 | 
						|
		case 3:
 | 
						|
			return function (ignored1, ignored2, ignored3) { return fn.apply(this, arguments); };
 | 
						|
		case 4:
 | 
						|
			return function (ignored1, ignored2, ignored3, ignored4) {
 | 
						|
				return fn.apply(this, arguments);
 | 
						|
			};
 | 
						|
		case 5:
 | 
						|
			return function (ignored1, ignored2, ignored3, ignored4, ignored5) {
 | 
						|
				return fn.apply(this, arguments);
 | 
						|
			};
 | 
						|
		case 6:
 | 
						|
			return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6) {
 | 
						|
				return fn.apply(this, arguments);
 | 
						|
			};
 | 
						|
		case 7:
 | 
						|
			return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6, ignored7) {
 | 
						|
				return fn.apply(this, arguments);
 | 
						|
			};
 | 
						|
		default:
 | 
						|
			throw new Error("Usupported function length");
 | 
						|
	}
 | 
						|
};
 |