Remove Error enum fixes/code from builds that don't need them.

Former-commit-id: db060ff3571ef656709447970b62f4af753ea0cb
This commit is contained in:
John-David Dalton
2013-05-19 10:52:56 -07:00
parent 8da0141cac
commit 90cca8a3eb
2 changed files with 22 additions and 15 deletions

View File

@@ -1300,9 +1300,7 @@
// remove `support.nonEnumShadows` from `iteratorTemplate`
source = source.replace(getIteratorTemplate(source), function(match) {
return match
.replace(/\s*\|\|\s*support\.nonEnumShadows/, '')
.replace(/(?: *\/\/.*\n)* *["']( *)<% *if *\(support\.nonEnumShadows[\s\S]+?["']\1<% *} *%>.+/, '');
return match.replace(/(?: *\/\/.*\n)* *["']( *)<% *if *\(support\.nonEnumShadows[\s\S]+?["']\1<% *} *%>.+/, '');
});
return source;
@@ -1826,10 +1824,9 @@
dependencyMap.reduceRight = _.without(dependencyMap.reduceRight, 'isString');
if (!isMobile) {
dependencyMap.isEmpty = _.without(dependencyMap.isEmpty, 'isArguments');
dependencyMap.isEqual = _.without(dependencyMap.isEqual, 'isArguments');
dependencyMap.isPlainObject = _.without(dependencyMap.isPlainObject, 'isArguments');
dependencyMap.keys = _.without(dependencyMap.keys, 'isArguments');
_.each(['isEmpty', 'isEqual', 'isPlainObject', 'keys'], function(methodName) {
dependencyMap[methodName] = _.without(dependencyMap[methodName], 'isArguments');
});
}
}
if (isUnderscore) {
@@ -3160,6 +3157,17 @@
if (_.size(source.match(/\bfreeExports\b/g)) < 2) {
source = removeVar(source, 'freeExports');
}
if (!/^ *support\.(?:skipErrorProps|nonEnumShadows) *=/m.test(source)) {
source = removeVar(source, 'Error');
source = removeVar(source, 'errorProto');
source = removeFromCreateIterator(source, 'errorClass');
source = removeFromCreateIterator(source, 'errorProto');
// remove 'Error' from the `contextProps` array
source = source.replace(/^ *var contextProps *=[\s\S]+?;/m, function(match) {
return match.replace(/'Error', */, '');
});
}
debugSource = cleanupSource(source);
source = cleanupSource(source);

View File

@@ -218,7 +218,6 @@
ctorByClass[arrayClass] = Array;
ctorByClass[boolClass] = Boolean;
ctorByClass[dateClass] = Date;
ctorByClass[errorClass] = Error;
ctorByClass[funcClass] = Function;
ctorByClass[objectClass] = Object;
ctorByClass[numberClass] = Number;
@@ -563,7 +562,7 @@
' <% } %>' +
// avoid iterating over `Error.prototype` properties in older IE and Safari
' <% if (support.enumErrorProps || support.nonEnumShadows) { %>\n' +
' <% if (support.enumErrorProps) { %>\n' +
' var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n' +
' <% } %>' +
@@ -825,16 +824,16 @@
// create the function factory
var factory = Function(
'ctorByClass, errorClass, errorProto, hasOwnProperty, isArguments, ' +
'isArray, isString, keys, lodash, objectProto, objectTypes, nonEnumProps, ' +
'stringClass, stringProto, toString',
'errorClass, errorProto, hasOwnProperty, isArguments, isArray, isString, ' +
'keys, lodash, objectProto, objectTypes, nonEnumProps, stringClass, ' +
'stringProto, toString',
'return function(' + args + ') {\n' + iteratorTemplate(data) + '\n}'
);
// return the compiled function
return factory(
ctorByClass, errorClass, errorProto, hasOwnProperty, isArguments,
isArray, isString, keys, lodash, objectProto, objectTypes, nonEnumProps,
stringClass, stringProto, toString
errorClass, errorProto, hasOwnProperty, isArguments, isArray, isString,
keys, lodash, objectProto, objectTypes, nonEnumProps, stringClass,
stringProto, toString
);
}