in src/common/argscheck.js [68:100]
function checkArgs (spec, functionName, args, opt_callee) {
if (!moduleExports.enableChecks) {
return;
}
var errMsg = null;
var typeName;
for (var i = 0; i < spec.length; ++i) {
var c = spec.charAt(i);
var cUpper = c.toUpperCase();
var arg = args[i];
// Asterix means allow anything.
if (c === '*') {
continue;
}
typeName = utils.typeName(arg);
if ((arg === null || arg === undefined) && c === cUpper) {
continue;
}
if (typeName !== typeMap[cUpper]) {
errMsg = 'Expected ' + typeMap[cUpper];
break;
}
}
if (errMsg) {
errMsg += ', but got ' + typeName + '.';
errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg;
// Don't log when running unit tests.
if (typeof jasmine === 'undefined') {
console.error(errMsg);
}
throw TypeError(errMsg);
}
}