CFA branches=100
equal 603 lines 18 KB
Timing
Files
// Control flow analysis stress test
type Entity =
| { kind: "type0"; data0: string; common: number }
| { kind: "type1"; data1: string; common: number }
| { kind: "type2"; data2: string; common: number }
| { kind: "type3"; data3: string; common: number }
| { kind: "type4"; data4: string; common: number }
| { kind: "type5"; data5: string; common: number }
| { kind: "type6"; data6: string; common: number }
| { kind: "type7"; data7: string; common: number }
| { kind: "type8"; data8: string; common: number }
| { kind: "type9"; data9: string; common: number }
| { kind: "type10"; data10: string; common: number }
| { kind: "type11"; data11: string; common: number }
| { kind: "type12"; data12: string; common: number }
| { kind: "type13"; data13: string; common: number }
| { kind: "type14"; data14: string; common: number }
| { kind: "type15"; data15: string; common: number }
| { kind: "type16"; data16: string; common: number }
| { kind: "type17"; data17: string; common: number }
| { kind: "type18"; data18: string; common: number }
| { kind: "type19"; data19: string; common: number }
| { kind: "type20"; data20: string; common: number }
| { kind: "type21"; data21: string; common: number }
| { kind: "type22"; data22: string; common: number }
| { kind: "type23"; data23: string; common: number }
| { kind: "type24"; data24: string; common: number }
| { kind: "type25"; data25: string; common: number }
| { kind: "type26"; data26: string; common: number }
| { kind: "type27"; data27: string; common: number }
| { kind: "type28"; data28: string; common: number }
| { kind: "type29"; data29: string; common: number }
| { kind: "type30"; data30: string; common: number }
| { kind: "type31"; data31: string; common: number }
| { kind: "type32"; data32: string; common: number }
| { kind: "type33"; data33: string; common: number }
| { kind: "type34"; data34: string; common: number }
| { kind: "type35"; data35: string; common: number }
| { kind: "type36"; data36: string; common: number }
| { kind: "type37"; data37: string; common: number }
| { kind: "type38"; data38: string; common: number }
| { kind: "type39"; data39: string; common: number }
| { kind: "type40"; data40: string; common: number }
| { kind: "type41"; data41: string; common: number }
| { kind: "type42"; data42: string; common: number }
| { kind: "type43"; data43: string; common: number }
| { kind: "type44"; data44: string; common: number }
| { kind: "type45"; data45: string; common: number }
| { kind: "type46"; data46: string; common: number }
| { kind: "type47"; data47: string; common: number }
| { kind: "type48"; data48: string; common: number }
| { kind: "type49"; data49: string; common: number }
| { kind: "type50"; data50: string; common: number }
| { kind: "type51"; data51: string; common: number }
| { kind: "type52"; data52: string; common: number }
| { kind: "type53"; data53: string; common: number }
| { kind: "type54"; data54: string; common: number }
| { kind: "type55"; data55: string; common: number }
| { kind: "type56"; data56: string; common: number }
| { kind: "type57"; data57: string; common: number }
| { kind: "type58"; data58: string; common: number }
| { kind: "type59"; data59: string; common: number }
| { kind: "type60"; data60: string; common: number }
| { kind: "type61"; data61: string; common: number }
| { kind: "type62"; data62: string; common: number }
| { kind: "type63"; data63: string; common: number }
| { kind: "type64"; data64: string; common: number }
| { kind: "type65"; data65: string; common: number }
| { kind: "type66"; data66: string; common: number }
| { kind: "type67"; data67: string; common: number }
| { kind: "type68"; data68: string; common: number }
| { kind: "type69"; data69: string; common: number }
| { kind: "type70"; data70: string; common: number }
| { kind: "type71"; data71: string; common: number }
| { kind: "type72"; data72: string; common: number }
| { kind: "type73"; data73: string; common: number }
| { kind: "type74"; data74: string; common: number }
| { kind: "type75"; data75: string; common: number }
| { kind: "type76"; data76: string; common: number }
| { kind: "type77"; data77: string; common: number }
| { kind: "type78"; data78: string; common: number }
| { kind: "type79"; data79: string; common: number }
| { kind: "type80"; data80: string; common: number }
| { kind: "type81"; data81: string; common: number }
| { kind: "type82"; data82: string; common: number }
| { kind: "type83"; data83: string; common: number }
| { kind: "type84"; data84: string; common: number }
| { kind: "type85"; data85: string; common: number }
| { kind: "type86"; data86: string; common: number }
| { kind: "type87"; data87: string; common: number }
| { kind: "type88"; data88: string; common: number }
| { kind: "type89"; data89: string; common: number }
| { kind: "type90"; data90: string; common: number }
| { kind: "type91"; data91: string; common: number }
| { kind: "type92"; data92: string; common: number }
| { kind: "type93"; data93: string; common: number }
| { kind: "type94"; data94: string; common: number }
| { kind: "type95"; data95: string; common: number }
| { kind: "type96"; data96: string; common: number }
| { kind: "type97"; data97: string; common: number }
| { kind: "type98"; data98: string; common: number }
| { kind: "type99"; data99: string; common: number };
function processEntity(e: Entity): string {
switch (e.kind) {
case "type0": return e.data0;
case "type1": return e.data1;
case "type2": return e.data2;
case "type3": return e.data3;
case "type4": return e.data4;
case "type5": return e.data5;
case "type6": return e.data6;
case "type7": return e.data7;
case "type8": return e.data8;
case "type9": return e.data9;
case "type10": return e.data10;
case "type11": return e.data11;
case "type12": return e.data12;
case "type13": return e.data13;
case "type14": return e.data14;
case "type15": return e.data15;
case "type16": return e.data16;
case "type17": return e.data17;
case "type18": return e.data18;
case "type19": return e.data19;
case "type20": return e.data20;
case "type21": return e.data21;
case "type22": return e.data22;
case "type23": return e.data23;
case "type24": return e.data24;
case "type25": return e.data25;
case "type26": return e.data26;
case "type27": return e.data27;
case "type28": return e.data28;
case "type29": return e.data29;
case "type30": return e.data30;
case "type31": return e.data31;
case "type32": return e.data32;
case "type33": return e.data33;
case "type34": return e.data34;
case "type35": return e.data35;
case "type36": return e.data36;
case "type37": return e.data37;
case "type38": return e.data38;
case "type39": return e.data39;
case "type40": return e.data40;
case "type41": return e.data41;
case "type42": return e.data42;
case "type43": return e.data43;
case "type44": return e.data44;
case "type45": return e.data45;
case "type46": return e.data46;
case "type47": return e.data47;
case "type48": return e.data48;
case "type49": return e.data49;
case "type50": return e.data50;
case "type51": return e.data51;
case "type52": return e.data52;
case "type53": return e.data53;
case "type54": return e.data54;
case "type55": return e.data55;
case "type56": return e.data56;
case "type57": return e.data57;
case "type58": return e.data58;
case "type59": return e.data59;
case "type60": return e.data60;
case "type61": return e.data61;
case "type62": return e.data62;
case "type63": return e.data63;
case "type64": return e.data64;
case "type65": return e.data65;
case "type66": return e.data66;
case "type67": return e.data67;
case "type68": return e.data68;
case "type69": return e.data69;
case "type70": return e.data70;
case "type71": return e.data71;
case "type72": return e.data72;
case "type73": return e.data73;
case "type74": return e.data74;
case "type75": return e.data75;
case "type76": return e.data76;
case "type77": return e.data77;
case "type78": return e.data78;
case "type79": return e.data79;
case "type80": return e.data80;
case "type81": return e.data81;
case "type82": return e.data82;
case "type83": return e.data83;
case "type84": return e.data84;
case "type85": return e.data85;
case "type86": return e.data86;
case "type87": return e.data87;
case "type88": return e.data88;
case "type89": return e.data89;
case "type90": return e.data90;
case "type91": return e.data91;
case "type92": return e.data92;
case "type93": return e.data93;
case "type94": return e.data94;
case "type95": return e.data95;
case "type96": return e.data96;
case "type97": return e.data97;
case "type98": return e.data98;
case "type99": return e.data99;
default: throw new Error("unreachable");
}
}
function processWithIf(e: Entity): string {
if (e.kind === "type0") return e.data0;
if (e.kind === "type1") return e.data1;
if (e.kind === "type2") return e.data2;
if (e.kind === "type3") return e.data3;
if (e.kind === "type4") return e.data4;
if (e.kind === "type5") return e.data5;
if (e.kind === "type6") return e.data6;
if (e.kind === "type7") return e.data7;
if (e.kind === "type8") return e.data8;
if (e.kind === "type9") return e.data9;
if (e.kind === "type10") return e.data10;
if (e.kind === "type11") return e.data11;
if (e.kind === "type12") return e.data12;
if (e.kind === "type13") return e.data13;
if (e.kind === "type14") return e.data14;
if (e.kind === "type15") return e.data15;
if (e.kind === "type16") return e.data16;
if (e.kind === "type17") return e.data17;
if (e.kind === "type18") return e.data18;
if (e.kind === "type19") return e.data19;
if (e.kind === "type20") return e.data20;
if (e.kind === "type21") return e.data21;
if (e.kind === "type22") return e.data22;
if (e.kind === "type23") return e.data23;
if (e.kind === "type24") return e.data24;
if (e.kind === "type25") return e.data25;
if (e.kind === "type26") return e.data26;
if (e.kind === "type27") return e.data27;
if (e.kind === "type28") return e.data28;
if (e.kind === "type29") return e.data29;
if (e.kind === "type30") return e.data30;
if (e.kind === "type31") return e.data31;
if (e.kind === "type32") return e.data32;
if (e.kind === "type33") return e.data33;
if (e.kind === "type34") return e.data34;
if (e.kind === "type35") return e.data35;
if (e.kind === "type36") return e.data36;
if (e.kind === "type37") return e.data37;
if (e.kind === "type38") return e.data38;
if (e.kind === "type39") return e.data39;
if (e.kind === "type40") return e.data40;
if (e.kind === "type41") return e.data41;
if (e.kind === "type42") return e.data42;
if (e.kind === "type43") return e.data43;
if (e.kind === "type44") return e.data44;
if (e.kind === "type45") return e.data45;
if (e.kind === "type46") return e.data46;
if (e.kind === "type47") return e.data47;
if (e.kind === "type48") return e.data48;
if (e.kind === "type49") return e.data49;
if (e.kind === "type50") return e.data50;
if (e.kind === "type51") return e.data51;
if (e.kind === "type52") return e.data52;
if (e.kind === "type53") return e.data53;
if (e.kind === "type54") return e.data54;
if (e.kind === "type55") return e.data55;
if (e.kind === "type56") return e.data56;
if (e.kind === "type57") return e.data57;
if (e.kind === "type58") return e.data58;
if (e.kind === "type59") return e.data59;
if (e.kind === "type60") return e.data60;
if (e.kind === "type61") return e.data61;
if (e.kind === "type62") return e.data62;
if (e.kind === "type63") return e.data63;
if (e.kind === "type64") return e.data64;
if (e.kind === "type65") return e.data65;
if (e.kind === "type66") return e.data66;
if (e.kind === "type67") return e.data67;
if (e.kind === "type68") return e.data68;
if (e.kind === "type69") return e.data69;
if (e.kind === "type70") return e.data70;
if (e.kind === "type71") return e.data71;
if (e.kind === "type72") return e.data72;
if (e.kind === "type73") return e.data73;
if (e.kind === "type74") return e.data74;
if (e.kind === "type75") return e.data75;
if (e.kind === "type76") return e.data76;
if (e.kind === "type77") return e.data77;
if (e.kind === "type78") return e.data78;
if (e.kind === "type79") return e.data79;
if (e.kind === "type80") return e.data80;
if (e.kind === "type81") return e.data81;
if (e.kind === "type82") return e.data82;
if (e.kind === "type83") return e.data83;
if (e.kind === "type84") return e.data84;
if (e.kind === "type85") return e.data85;
if (e.kind === "type86") return e.data86;
if (e.kind === "type87") return e.data87;
if (e.kind === "type88") return e.data88;
if (e.kind === "type89") return e.data89;
if (e.kind === "type90") return e.data90;
if (e.kind === "type91") return e.data91;
if (e.kind === "type92") return e.data92;
if (e.kind === "type93") return e.data93;
if (e.kind === "type94") return e.data94;
if (e.kind === "type95") return e.data95;
if (e.kind === "type96") return e.data96;
if (e.kind === "type97") return e.data97;
if (e.kind === "type98") return e.data98;
if (e.kind === "type99") return e.data99;
return processEntity(e);
}