Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 93b0c2d

Browse files
rodyhaddadpetebacondarwin
authored andcommitted
feat($parse): allow for assignments in ternary operator branches
Closes #8512 Closes #8484 CLoses #5434 Conflicts: test/ng/parseSpec.js
1 parent d262378 commit 93b0c2d

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/ng/parse.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -606,9 +606,9 @@ Parser.prototype = {
606606
var middle;
607607
var token;
608608
if ((token = this.expect('?'))) {
609-
middle = this.ternary();
609+
middle = this.assignment();
610610
if ((token = this.expect(':'))) {
611-
return this.ternaryFn(left, middle, this.ternary());
611+
return this.ternaryFn(left, middle, this.assignment());
612612
} else {
613613
this.throwError('expected :', token);
614614
}

test/ng/parseSpec.js

+11
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,17 @@ describe('parser', function() {
434434
expect(scope.b).toEqual(234);
435435
});
436436

437+
it('should evaluate assignments in ternary operator', function() {
438+
scope.$eval('a = 1 ? 2 : 3');
439+
expect(scope.a).toBe(2);
440+
441+
scope.$eval('0 ? a = 2 : a = 3');
442+
expect(scope.a).toBe(3);
443+
444+
scope.$eval('1 ? a = 2 : a = 3');
445+
expect(scope.a).toBe(2);
446+
});
447+
437448
it('should evaluate function call without arguments', function() {
438449
scope['const'] = function(a,b){return 123;};
439450
expect(scope.$eval("const()")).toEqual(123);

0 commit comments

Comments
 (0)