TypeScript/tests/baselines/reference/elementAccessChain.js
Ron Buckton b58a29b808
Fix emit for optional chain with non-null assertion (#36539)
* Fix emit for optional chain with non-null assertion

* Treat '!' differently inside chain vs end of chain

* remove dead code and fix comment
2020-03-25 15:28:13 -07:00

53 lines
2 KiB
TypeScript

//// [elementAccessChain.ts]
declare const o1: undefined | { b: string };
o1?.["b"];
declare const o2: undefined | { b: { c: string } };
o2?.["b"].c;
o2?.b["c"];
declare const o3: { b: undefined | { c: string } };
o3["b"]?.c;
o3.b?.["c"];
declare const o4: { b?: { c: { d?: { e: string } } } };
o4.b?.["c"].d?.e;
o4.b?.["c"].d?.["e"];
declare const o5: { b?(): { c: { d?: { e: string } } } };
o5.b?.()["c"].d?.e;
o5.b?.()["c"].d?.["e"];
o5["b"]?.()["c"].d?.e;
o5["b"]?.()["c"].d?.["e"];
// GH#33744
declare const o6: <T>() => undefined | ({ x: number });
o6<number>()?.["x"];
// GH#36031
o2?.["b"]!.c;
o2?.["b"]!["c"];
o2?.["b"]!.c!;
o2?.["b"]!["c"]!;
//// [elementAccessChain.js]
"use strict";
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
o1 === null || o1 === void 0 ? void 0 : o1["b"];
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
o2 === null || o2 === void 0 ? void 0 : o2.b["c"];
(_a = o3["b"]) === null || _a === void 0 ? void 0 : _a.c;
(_b = o3.b) === null || _b === void 0 ? void 0 : _b["c"];
(_d = (_c = o4.b) === null || _c === void 0 ? void 0 : _c["c"].d) === null || _d === void 0 ? void 0 : _d.e;
(_f = (_e = o4.b) === null || _e === void 0 ? void 0 : _e["c"].d) === null || _f === void 0 ? void 0 : _f["e"];
(_h = (_g = o5.b) === null || _g === void 0 ? void 0 : _g.call(o5)["c"].d) === null || _h === void 0 ? void 0 : _h.e;
(_k = (_j = o5.b) === null || _j === void 0 ? void 0 : _j.call(o5)["c"].d) === null || _k === void 0 ? void 0 : _k["e"];
(_m = (_l = o5["b"]) === null || _l === void 0 ? void 0 : _l.call(o5)["c"].d) === null || _m === void 0 ? void 0 : _m.e;
(_p = (_o = o5["b"]) === null || _o === void 0 ? void 0 : _o.call(o5)["c"].d) === null || _p === void 0 ? void 0 : _p["e"];
(_q = o6()) === null || _q === void 0 ? void 0 : _q["x"];
// GH#36031
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
o2 === null || o2 === void 0 ? void 0 : o2["b"]["c"];
o2 === null || o2 === void 0 ? void 0 : o2["b"].c;
o2 === null || o2 === void 0 ? void 0 : o2["b"]["c"];