@@ -434,3 +434,164 @@ if (!done) {
434434>value : Symbol(value, Decl(dependentDestructuredVariables.ts, 164, 7))
435435}
436436
437+ // Repro from #46658
438+
439+ declare function f50(cb: (...args: Args) => void): void
440+ >f50 : Symbol(f50, Decl(dependentDestructuredVariables.ts, 167, 1))
441+ >cb : Symbol(cb, Decl(dependentDestructuredVariables.ts, 171, 21))
442+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 171, 26))
443+ >Args : Symbol(Args, Decl(dependentDestructuredVariables.ts, 111, 1))
444+
445+ f50((kind, data) => {
446+ >f50 : Symbol(f50, Decl(dependentDestructuredVariables.ts, 167, 1))
447+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 173, 5))
448+ >data : Symbol(data, Decl(dependentDestructuredVariables.ts, 173, 10))
449+
450+ if (kind === 'A') {
451+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 173, 5))
452+
453+ data.toFixed();
454+ >data.toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
455+ >data : Symbol(data, Decl(dependentDestructuredVariables.ts, 173, 10))
456+ >toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
457+ }
458+ if (kind === 'B') {
459+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 173, 5))
460+
461+ data.toUpperCase();
462+ >data.toUpperCase : Symbol(String.toUpperCase, Decl(lib.es5.d.ts, --, --))
463+ >data : Symbol(data, Decl(dependentDestructuredVariables.ts, 173, 10))
464+ >toUpperCase : Symbol(String.toUpperCase, Decl(lib.es5.d.ts, --, --))
465+ }
466+ });
467+
468+ const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => {
469+ >f51 : Symbol(f51, Decl(dependentDestructuredVariables.ts, 182, 5))
470+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 182, 12))
471+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 182, 63))
472+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 182, 68))
473+
474+ if (kind === 'A') {
475+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 182, 63))
476+
477+ payload.toFixed();
478+ >payload.toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
479+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 182, 68))
480+ >toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
481+ }
482+ if (kind === 'B') {
483+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 182, 63))
484+
485+ payload.toUpperCase();
486+ >payload.toUpperCase : Symbol(String.toUpperCase, Decl(lib.es5.d.ts, --, --))
487+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 182, 68))
488+ >toUpperCase : Symbol(String.toUpperCase, Decl(lib.es5.d.ts, --, --))
489+ }
490+ };
491+
492+ const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => {
493+ >f52 : Symbol(f52, Decl(dependentDestructuredVariables.ts, 191, 5))
494+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 191, 12))
495+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 191, 55))
496+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 191, 60))
497+
498+ if (kind === 'A') {
499+ >kind : Symbol(kind, Decl(dependentDestructuredVariables.ts, 191, 55))
500+
501+ payload.toFixed();
502+ >payload.toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
503+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 191, 60))
504+ >toFixed : Symbol(Number.toFixed, Decl(lib.es5.d.ts, --, --))
505+ }
506+ else {
507+ payload; // undefined
508+ >payload : Symbol(payload, Decl(dependentDestructuredVariables.ts, 191, 60))
509+ }
510+ };
511+
512+ declare function readFile(path: string, callback: (...args: [err: null, data: unknown[]] | [err: Error, data: undefined]) => void): void;
513+ >readFile : Symbol(readFile, Decl(dependentDestructuredVariables.ts, 198, 2))
514+ >path : Symbol(path, Decl(dependentDestructuredVariables.ts, 200, 26))
515+ >callback : Symbol(callback, Decl(dependentDestructuredVariables.ts, 200, 39))
516+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 200, 51))
517+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
518+
519+ readFile('hello', (err, data) => {
520+ >readFile : Symbol(readFile, Decl(dependentDestructuredVariables.ts, 198, 2))
521+ >err : Symbol(err, Decl(dependentDestructuredVariables.ts, 202, 19))
522+ >data : Symbol(data, Decl(dependentDestructuredVariables.ts, 202, 23))
523+
524+ if (err === null) {
525+ >err : Symbol(err, Decl(dependentDestructuredVariables.ts, 202, 19))
526+
527+ data.length;
528+ >data.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
529+ >data : Symbol(data, Decl(dependentDestructuredVariables.ts, 202, 23))
530+ >length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
531+ }
532+ else {
533+ err.message;
534+ >err.message : Symbol(Error.message, Decl(lib.es5.d.ts, --, --))
535+ >err : Symbol(err, Decl(dependentDestructuredVariables.ts, 202, 19))
536+ >message : Symbol(Error.message, Decl(lib.es5.d.ts, --, --))
537+ }
538+ });
539+
540+ type ReducerArgs = ["add", { a: number, b: number }] | ["concat", { firstArr: any[], secondArr: any[] }];
541+ >ReducerArgs : Symbol(ReducerArgs, Decl(dependentDestructuredVariables.ts, 209, 3))
542+ >a : Symbol(a, Decl(dependentDestructuredVariables.ts, 211, 28))
543+ >b : Symbol(b, Decl(dependentDestructuredVariables.ts, 211, 39))
544+ >firstArr : Symbol(firstArr, Decl(dependentDestructuredVariables.ts, 211, 67))
545+ >secondArr : Symbol(secondArr, Decl(dependentDestructuredVariables.ts, 211, 84))
546+
547+ const reducer: (...args: ReducerArgs) => void = (op, args) => {
548+ >reducer : Symbol(reducer, Decl(dependentDestructuredVariables.ts, 213, 5))
549+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 16))
550+ >ReducerArgs : Symbol(ReducerArgs, Decl(dependentDestructuredVariables.ts, 209, 3))
551+ >op : Symbol(op, Decl(dependentDestructuredVariables.ts, 213, 49))
552+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 52))
553+
554+ switch (op) {
555+ >op : Symbol(op, Decl(dependentDestructuredVariables.ts, 213, 49))
556+
557+ case "add":
558+ console.log(args.a + args.b);
559+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
560+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
561+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
562+ >args.a : Symbol(a, Decl(dependentDestructuredVariables.ts, 211, 28))
563+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 52))
564+ >a : Symbol(a, Decl(dependentDestructuredVariables.ts, 211, 28))
565+ >args.b : Symbol(b, Decl(dependentDestructuredVariables.ts, 211, 39))
566+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 52))
567+ >b : Symbol(b, Decl(dependentDestructuredVariables.ts, 211, 39))
568+
569+ break;
570+ case "concat":
571+ console.log(args.firstArr.concat(args.secondArr));
572+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
573+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
574+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
575+ >args.firstArr.concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
576+ >args.firstArr : Symbol(firstArr, Decl(dependentDestructuredVariables.ts, 211, 67))
577+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 52))
578+ >firstArr : Symbol(firstArr, Decl(dependentDestructuredVariables.ts, 211, 67))
579+ >concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
580+ >args.secondArr : Symbol(secondArr, Decl(dependentDestructuredVariables.ts, 211, 84))
581+ >args : Symbol(args, Decl(dependentDestructuredVariables.ts, 213, 52))
582+ >secondArr : Symbol(secondArr, Decl(dependentDestructuredVariables.ts, 211, 84))
583+
584+ break;
585+ }
586+ }
587+
588+ reducer("add", { a: 1, b: 3 });
589+ >reducer : Symbol(reducer, Decl(dependentDestructuredVariables.ts, 213, 5))
590+ >a : Symbol(a, Decl(dependentDestructuredVariables.ts, 224, 16))
591+ >b : Symbol(b, Decl(dependentDestructuredVariables.ts, 224, 22))
592+
593+ reducer("concat", { firstArr: [1, 2], secondArr: [3, 4] });
594+ >reducer : Symbol(reducer, Decl(dependentDestructuredVariables.ts, 213, 5))
595+ >firstArr : Symbol(firstArr, Decl(dependentDestructuredVariables.ts, 225, 19))
596+ >secondArr : Symbol(secondArr, Decl(dependentDestructuredVariables.ts, 225, 37))
597+
0 commit comments