@@ -434,3 +434,164 @@ if (!done) {
434
434
>value : Symbol(value, Decl(dependentDestructuredVariables.ts, 164, 7))
435
435
}
436
436
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