Commit 8c13cfa8 authored by jaubourg's avatar jaubourg

Fixes #9104. Returning null or undefined in a pipe callback shouldn't end up...

Fixes #9104. Returning null or undefined in a pipe callback shouldn't end up throwing an exception. Silly, silly, me.
parent efd0fce7
...@@ -119,7 +119,7 @@ jQuery.extend({ ...@@ -119,7 +119,7 @@ jQuery.extend({
if ( jQuery.isFunction( fn ) ) { if ( jQuery.isFunction( fn ) ) {
deferred[ handler ](function() { deferred[ handler ](function() {
returned = fn.apply( this, arguments ); returned = fn.apply( this, arguments );
if ( jQuery.isFunction( returned.promise ) ) { if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise().then( newDefer.resolve, newDefer.reject ); returned.promise().then( newDefer.resolve, newDefer.reject );
} else { } else {
newDefer[ action ]( returned ); newDefer[ action ]( returned );
......
...@@ -145,7 +145,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) { ...@@ -145,7 +145,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
test( "jQuery.Deferred.pipe - filtering (done)", function() { test( "jQuery.Deferred.pipe - filtering (done)", function() {
expect(3); expect(4);
var defer = jQuery.Deferred(), var defer = jQuery.Deferred(),
piped = defer.pipe(function( a, b ) { piped = defer.pipe(function( a, b ) {
...@@ -173,11 +173,15 @@ test( "jQuery.Deferred.pipe - filtering (done)", function() { ...@@ -173,11 +173,15 @@ test( "jQuery.Deferred.pipe - filtering (done)", function() {
jQuery.Deferred().reject().pipe(function() { jQuery.Deferred().reject().pipe(function() {
ok( false, "pipe should not be called on reject" ); ok( false, "pipe should not be called on reject" );
}); });
jQuery.Deferred().resolve().pipe( jQuery.noop ).done(function( value ) {
strictEqual( value, undefined, "pipe done callback can return undefined/null" );
});
}); });
test( "jQuery.Deferred.pipe - filtering (fail)", function() { test( "jQuery.Deferred.pipe - filtering (fail)", function() {
expect(3); expect(4);
var defer = jQuery.Deferred(), var defer = jQuery.Deferred(),
piped = defer.pipe( null, function( a, b ) { piped = defer.pipe( null, function( a, b ) {
...@@ -205,6 +209,10 @@ test( "jQuery.Deferred.pipe - filtering (fail)", function() { ...@@ -205,6 +209,10 @@ test( "jQuery.Deferred.pipe - filtering (fail)", function() {
jQuery.Deferred().resolve().pipe( null, function() { jQuery.Deferred().resolve().pipe( null, function() {
ok( false, "pipe should not be called on resolve" ); ok( false, "pipe should not be called on resolve" );
} ); } );
jQuery.Deferred().reject().pipe( null, jQuery.noop ).fail(function( value ) {
strictEqual( value, undefined, "pipe fail callback can return undefined/null" );
});
}); });
test( "jQuery.Deferred.pipe - deferred (done)", function() { test( "jQuery.Deferred.pipe - deferred (done)", function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment