From 723a8bd3ac899b5f2399370f11669bd79a257d7d Mon Sep 17 00:00:00 2001 From: Lucas Mirelmann Date: Sat, 16 Apr 2016 20:17:22 +0200 Subject: [PATCH] fix($parse): Handle sign of `-undefined` consistently When csp is disabled, evaluating `-undefined` is `-0` and when csp is enabled the evaluation is `0`. In most cases this is not an issue as `0 === -0`, but there is an edge case as `1/0 === Infinity` and `1/-0 === -Infinity` --- src/ng/parse.js | 2 +- test/ng/parseSpec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ng/parse.js b/src/ng/parse.js index 8f5922db5705..4a310dc1cee7 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -1516,7 +1516,7 @@ ASTInterpreter.prototype = { if (isDefined(arg)) { arg = -arg; } else { - arg = 0; + arg = -0; } return context ? {value: arg} : arg; }; diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index eea0b361c57c..8e383ab6d761 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -1755,7 +1755,7 @@ describe('parser', function() { expect(scope.$eval("+'1'")).toEqual(+'1'); expect(scope.$eval("-'1'")).toEqual(-'1'); expect(scope.$eval("+undefined")).toEqual(0); - expect(scope.$eval("-undefined")).toBe(0); + expect(scope.$eval("-undefined")).toEqual(-0); expect(scope.$eval("+null")).toEqual(+null); expect(scope.$eval("-null")).toEqual(-null); expect(scope.$eval("+false")).toEqual(+false);