From d6e166aa2d10394876c112cbc1d2443c18cdcea9 Mon Sep 17 00:00:00 2001 From: Lucas Mirelmann Date: Tue, 24 Nov 2015 22:48:52 +0100 Subject: [PATCH] fix($parse): handle interceptors with `undefined` expressions When calling `$parse` with `undefined` as the expression and with an interceptor, then when the function is evaluated, then call the interceptor Closes: #13367 --- src/ng/parse.js | 2 +- test/ng/parseSpec.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ng/parse.js b/src/ng/parse.js index 93d88229cc27..01df46857069 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -1775,7 +1775,7 @@ function $ParseProvider() { return addInterceptor(exp, interceptorFn); default: - return noop; + return addInterceptor(noop, interceptorFn); } }; diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 3f0027e604ff..82c6223e86ae 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -3165,6 +3165,17 @@ describe('parser', function() { expect(called).toBe(true); })); + it('should invoke interceptors when the expression is `undefined`', inject(function($parse) { + var called = false; + function interceptor(v) { + called = true; + return v; + } + scope.$watch($parse(undefined, interceptor)); + scope.$digest(); + expect(called).toBe(true); + })); + it('should treat filters with constant input as constants', inject(function($parse) { var filterCalls = 0; $filterProvider.register('foo', valueFn(function(input) {