From 0d0df08ff71fdbbb5de5c49049197583ab45f29e Mon Sep 17 00:00:00 2001 From: Lucas Galfaso Date: Wed, 5 Nov 2014 00:12:29 +0100 Subject: [PATCH] fix($parse): Handle the empty string as an object key When rebuilding an object literal key, use `isDefined` to decide if this is a string token or an identifier Closes #9893 --- src/ng/parse.js | 2 +- test/ng/parseSpec.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ng/parse.js b/src/ng/parse.js index 846e11b77223..136fbb07a502 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -806,7 +806,7 @@ Parser.prototype = { break; } var token = this.expect(); - keys.push(token.string || token.text); + keys.push(isDefined(token.string) ? token.string : token.text); this.consume(':'); var value = this.expression(); valueFns.push(value); diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 00d72bdd4c0c..0ed2f6daf817 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -511,6 +511,7 @@ describe('parser', function() { expect(toJson(scope.$eval("{a:'b',}"))).toEqual('{"a":"b"}'); expect(toJson(scope.$eval("{'a':'b',}"))).toEqual('{"a":"b"}'); expect(toJson(scope.$eval("{\"a\":'b',}"))).toEqual('{"a":"b"}'); + expect(toJson(scope.$eval('{"":"b",}'))).toEqual('{"":"b"}'); }); it('should evaluate object access', function() {