Expression caching

improved version of #9006 (which was an improved version of #8942)
Right, didn't think of that. And it won't have the normal literal handling
because the literal is not the root...

In test/ng/parseSpec.js:

> +          var watcherCalls = 0;
> +          scope.$watch(parsed, function(input) {
> +            expect(input).toEqual({x:1});
> +            watcherCalls++;
> +          });
> +
> +          scope.$digest();
> +          expect(filterCalls).toBe(1);
> +          expect(watcherCalls).toBe(1);
> +
> +          scope.$digest();
> +          expect(filterCalls).toBe(1);
> +          expect(watcherCalls).toBe(1);
> +        }));
> +        it('should not treat constants passed to filters with externalInput as constants', inject(function($parse) {
> +

such expression would result in infinite digest though because we'd
recreate the constant object during each reevaluation.

this could be fixed in the future, but I'm not going to deal with it now.
instead I'll just remove this single spec.

—
Reply to this email directly or view it on GitHub
<https://github.com/angular/angular.js/pull/9082/files#r17571465>.