123456789101112131415161718192021222324252627282930 |
- module.exports = function properlyBoxed(method) {
- // Check node 0.6.21 bug where third parameter is not boxed
- var properlyBoxesNonStrict = true;
- var properlyBoxesStrict = true;
- var threwException = false;
- if (typeof method === 'function') {
- try {
- // eslint-disable-next-line max-params
- method.call('f', function (_, __, O) {
- if (typeof O !== 'object') {
- properlyBoxesNonStrict = false;
- }
- });
- method.call(
- [null],
- function () {
- 'use strict';
- properlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this
- },
- 'x'
- );
- } catch (e) {
- threwException = true;
- }
- return !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
- }
- return false;
- };
|