@@ -516,3 +516,67 @@ function reducer(action: Action) {
516516 }
517517}
518518
519+ // Repro from #46768
520+
521+ type DotString = `${string}.${string}.${string}`;
522+ >DotString : Symbol(DotString, Decl(templateLiteralTypes3.ts, 170, 1))
523+
524+ declare function noSpread<P extends DotString>(args: P[]): P;
525+ >noSpread : Symbol(noSpread, Decl(templateLiteralTypes3.ts, 174, 49))
526+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 176, 26))
527+ >DotString : Symbol(DotString, Decl(templateLiteralTypes3.ts, 170, 1))
528+ >args : Symbol(args, Decl(templateLiteralTypes3.ts, 176, 47))
529+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 176, 26))
530+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 176, 26))
531+
532+ declare function spread<P extends DotString>(...args: P[]): P;
533+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
534+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 177, 24))
535+ >DotString : Symbol(DotString, Decl(templateLiteralTypes3.ts, 170, 1))
536+ >args : Symbol(args, Decl(templateLiteralTypes3.ts, 177, 45))
537+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 177, 24))
538+ >P : Symbol(P, Decl(templateLiteralTypes3.ts, 177, 24))
539+
540+ noSpread([`1.${'2'}.3`, `1.${'2'}.4`]);
541+ >noSpread : Symbol(noSpread, Decl(templateLiteralTypes3.ts, 174, 49))
542+
543+ noSpread([`1.${'2' as string}.3`, `1.${'2' as string}.4`]);
544+ >noSpread : Symbol(noSpread, Decl(templateLiteralTypes3.ts, 174, 49))
545+
546+ spread(`1.${'2'}.3`, `1.${'2'}.4`);
547+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
548+
549+ spread(`1.${'2' as string}.3`, `1.${'2' as string}.4`);
550+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
551+
552+ function ft1<T extends string>(t: T, u: Uppercase<T>, u1: Uppercase<`1.${T}.3`>, u2: Uppercase<`1.${T}.4`>) {
553+ >ft1 : Symbol(ft1, Decl(templateLiteralTypes3.ts, 183, 55))
554+ >T : Symbol(T, Decl(templateLiteralTypes3.ts, 185, 13))
555+ >t : Symbol(t, Decl(templateLiteralTypes3.ts, 185, 31))
556+ >T : Symbol(T, Decl(templateLiteralTypes3.ts, 185, 13))
557+ >u : Symbol(u, Decl(templateLiteralTypes3.ts, 185, 36))
558+ >Uppercase : Symbol(Uppercase, Decl(lib.es5.d.ts, --, --))
559+ >T : Symbol(T, Decl(templateLiteralTypes3.ts, 185, 13))
560+ >u1 : Symbol(u1, Decl(templateLiteralTypes3.ts, 185, 53))
561+ >Uppercase : Symbol(Uppercase, Decl(lib.es5.d.ts, --, --))
562+ >T : Symbol(T, Decl(templateLiteralTypes3.ts, 185, 13))
563+ >u2 : Symbol(u2, Decl(templateLiteralTypes3.ts, 185, 80))
564+ >Uppercase : Symbol(Uppercase, Decl(lib.es5.d.ts, --, --))
565+ >T : Symbol(T, Decl(templateLiteralTypes3.ts, 185, 13))
566+
567+ spread(`1.${t}.3`, `1.${t}.4`);
568+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
569+ >t : Symbol(t, Decl(templateLiteralTypes3.ts, 185, 31))
570+ >t : Symbol(t, Decl(templateLiteralTypes3.ts, 185, 31))
571+
572+ spread(`1.${u}.3`, `1.${u}.4`);
573+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
574+ >u : Symbol(u, Decl(templateLiteralTypes3.ts, 185, 36))
575+ >u : Symbol(u, Decl(templateLiteralTypes3.ts, 185, 36))
576+
577+ spread(u1, u2);
578+ >spread : Symbol(spread, Decl(templateLiteralTypes3.ts, 176, 61))
579+ >u1 : Symbol(u1, Decl(templateLiteralTypes3.ts, 185, 53))
580+ >u2 : Symbol(u2, Decl(templateLiteralTypes3.ts, 185, 80))
581+ }
582+
0 commit comments