@@ -421,13 +421,26 @@ function wrapfunction (fn, message) {
421421
422422 site . name = fn . name
423423
424- // eslint-disable-next-line no-new-func
425- var deprecatedfn = new Function ( 'fn' , 'log' , 'deprecate' , 'message' , 'site' ,
426- '"use strict"\n' +
427- 'return function (' + args + ') {' +
428- 'log.call(deprecate, message, site)\n' +
429- 'return fn.apply(this, arguments)\n' +
430- '}' ) ( fn , log , this , message , site )
424+ var deprecatedfn ;
425+ var self = this ;
426+ if ( Object . defineProperty ) {
427+ deprecatedfn = function ( ) {
428+ "use strict" ;
429+ log . call ( self , message , site ) ;
430+ return fn . apply ( this , arguments ) ;
431+ } ;
432+ Object . defineProperty ( deprecatedfn , 'length' , { value : fn . length } ) ;
433+ Object . defineProperty ( deprecatedfn , 'name' , { value : fn . name } ) ;
434+ }
435+ if ( ! deprecatedfn || deprecatedfn . length !== fn . length || deprecatedfn . name !== fn . name ) {
436+ // eslint-disable-next-line no-new-func
437+ var deprecatedfn = new Function ( 'fn' , 'log' , 'deprecate' , 'message' , 'site' ,
438+ '"use strict"\n' +
439+ 'return function (' + args + ') {' +
440+ 'log.call(deprecate, message, site)\n' +
441+ 'return fn.apply(this, arguments)\n' +
442+ '}' ) ( fn , log , this , message , site )
443+ }
431444
432445 return deprecatedfn
433446}
0 commit comments