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

Commit 2d678f1

Browse files
rodyhaddadpetebacondarwin
authored andcommitted
feat($parse): allow for assignments in ternary operator branches
Closes #8512 Closes #8484 CLoses #5434
1 parent 01d81cd commit 2d678f1

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
@@ -589,9 +589,9 @@ Parser.prototype = {
589589
var middle;
590590
var token;
591591
if ((token = this.expect('?'))) {
592-
middle = this.ternary();
592+
middle = this.assignment();
593593
if ((token = this.expect(':'))) {
594-
return this.ternaryFn(left, middle, this.ternary());
594+
return this.ternaryFn(left, middle, this.assignment());
595595
} else {
596596
this.throwError('expected :', token);
597597
}

test/ng/parseSpec.js

+11
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,17 @@ describe('parser', function() {
429429
expect(scope.b).toEqual(234);
430430
});
431431

432+
it('should evaluate assignments in ternary operator', function() {
433+
scope.$eval('a = 1 ? 2 : 3');
434+
expect(scope.a).toBe(2);
435+
436+
scope.$eval('0 ? a = 2 : a = 3');
437+
expect(scope.a).toBe(3);
438+
439+
scope.$eval('1 ? a = 2 : a = 3');
440+
expect(scope.a).toBe(2);
441+
});
442+
432443
it('should evaluate function call without arguments', function() {
433444
scope['const'] = function(a,b){return 123;};
434445
expect(scope.$eval("const()")).toEqual(123);

0 commit comments

Comments
 (0)