Files
test-repo/tests/js/logical-assignment/logical-assignment.js
T
Sosuke Suzuki 85a81e47b7 Add more tests for logical assignment operator (#8692)
* Add more tests for logical assignment operator

* Make tests shorter
2020-07-03 01:24:24 +09:00

56 lines
1.1 KiB
JavaScript

a ||= b;
a &&= "foo";
b ||= "foo";
c ??= "foo";
d &&= 42;
e ||= 42;
f ??= 42;
a.baz &&= result.baz;
b.baz ||= result.baz;
c.baz ??= result.baz;
a.foo["baz"] &&= result.foo.baz;
b.foo["baz"] ||= result.foo.baz;
c.foo["baz"] ??= result.foo.baz;
a.foo.bar().baz &&= result.foo.bar().baz;
b.foo.bar().baz ||= result.foo.bar().baz;
c.foo.bar().baz ??= result.foo.bar().baz(a.baz) &&= result.baz;
b.baz ||= result.baz;
c.baz ??= result.baz;
(results ||= []).push(100);
(results &&= []).push(100);
(results ??= []).push(100);
if ((thing &&= thing.original)) {
}
if ((thing &&= defaultValue)) {
}
if ((thing ||= defaultValue)) {
}
if ((thing ??= defaultValue)) {
}
f ||= (a) => a;
f &&= (a) => a;
f ??= (a) => a;
f ||= (f.toString(), (a) => a);
f &&= (f.toString(), (a) => a);
f ??= (f.toString(), (a) => a);
(results ||= results1 ||= []).push(100);
(results &&= results1 &&= []).push(100);
(results ??= results1 ??= []).push(100);
obj[incr()] ||= incr();
oobj["obj"][incr()] ||= incr();
obj[incr()] &&= incr();
oobj["obj"][incr()] &&= incr();
obj[incr()] ??= incr();
oobj["obj"][incr()] ??= incr();