TypeScript/tests/baselines/reference/enumLiteralTypes3.js
2016-07-06 21:01:51 -07:00

226 lines
4.2 KiB
TypeScript

//// [enumLiteralTypes3.ts]
const enum Choice { Unknown, Yes, No };
type Yes = Choice.Yes;
type YesNo = Choice.Yes | Choice.No;
type NoYes = Choice.No | Choice.Yes;
type UnknownYesNo = Choice.Unknown | Choice.Yes | Choice.No;
function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
a = a;
a = b;
a = c;
a = d;
}
function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
b = a;
b = b;
b = c;
b = d;
}
function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
c = a;
c = b;
c = c;
c = d;
}
function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
d = a;
d = b;
d = c;
d = d;
}
function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
a = Choice.Unknown;
a = Choice.Yes;
a = Choice.No;
b = Choice.Unknown;
b = Choice.Yes;
b = Choice.No;
c = Choice.Unknown;
c = Choice.Yes;
c = Choice.No;
d = Choice.Unknown;
d = Choice.Yes;
d = Choice.No;
}
function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
a === Choice.Unknown;
a === Choice.Yes;
a === Choice.No;
b === Choice.Unknown;
b === Choice.Yes;
b === Choice.No;
c === Choice.Unknown;
c === Choice.Yes;
c === Choice.No;
d === Choice.Unknown;
d === Choice.Yes;
d === Choice.No;
}
function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) {
a === a;
a === b;
a === c;
a === d;
b === a;
b === b;
b === c;
b === d;
c === a;
c === b;
c === c;
c === d;
d === a;
d === b;
d === c;
d === d;
}
function f10(x: Yes): Yes {
switch (x) {
case Choice.Unknown: return x;
case Choice.Yes: return x;
case Choice.No: return x;
}
return x;
}
function f11(x: YesNo): YesNo {
switch (x) {
case Choice.Unknown: return x;
case Choice.Yes: return x;
case Choice.No: return x;
}
return x;
}
function f12(x: UnknownYesNo): UnknownYesNo {
switch (x) {
case Choice.Unknown: return x;
case Choice.Yes: return x;
case Choice.No: return x;
}
return x;
}
function f13(x: Choice): Choice {
switch (x) {
case Choice.Unknown: return x;
case Choice.Yes: return x;
case Choice.No: return x;
}
return x;
}
//// [enumLiteralTypes3.js]
;
function f1(a, b, c, d) {
a = a;
a = b;
a = c;
a = d;
}
function f2(a, b, c, d) {
b = a;
b = b;
b = c;
b = d;
}
function f3(a, b, c, d) {
c = a;
c = b;
c = c;
c = d;
}
function f4(a, b, c, d) {
d = a;
d = b;
d = c;
d = d;
}
function f5(a, b, c, d) {
a = 0 /* Unknown */;
a = 1 /* Yes */;
a = 2 /* No */;
b = 0 /* Unknown */;
b = 1 /* Yes */;
b = 2 /* No */;
c = 0 /* Unknown */;
c = 1 /* Yes */;
c = 2 /* No */;
d = 0 /* Unknown */;
d = 1 /* Yes */;
d = 2 /* No */;
}
function f6(a, b, c, d) {
a === 0 /* Unknown */;
a === 1 /* Yes */;
a === 2 /* No */;
b === 0 /* Unknown */;
b === 1 /* Yes */;
b === 2 /* No */;
c === 0 /* Unknown */;
c === 1 /* Yes */;
c === 2 /* No */;
d === 0 /* Unknown */;
d === 1 /* Yes */;
d === 2 /* No */;
}
function f7(a, b, c, d) {
a === a;
a === b;
a === c;
a === d;
b === a;
b === b;
b === c;
b === d;
c === a;
c === b;
c === c;
c === d;
d === a;
d === b;
d === c;
d === d;
}
function f10(x) {
switch (x) {
case 0 /* Unknown */: return x;
case 1 /* Yes */: return x;
case 2 /* No */: return x;
}
return x;
}
function f11(x) {
switch (x) {
case 0 /* Unknown */: return x;
case 1 /* Yes */: return x;
case 2 /* No */: return x;
}
return x;
}
function f12(x) {
switch (x) {
case 0 /* Unknown */: return x;
case 1 /* Yes */: return x;
case 2 /* No */: return x;
}
return x;
}
function f13(x) {
switch (x) {
case 0 /* Unknown */: return x;
case 1 /* Yes */: return x;
case 2 /* No */: return x;
}
return x;
}