|
| 1 | +=== tests/cases/compiler/bindingPatternCannotBeOnlyInferenceSource.ts === |
| 2 | +declare function f<T>(): T; |
| 3 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 0)) |
| 4 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 19)) |
| 5 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 19)) |
| 6 | + |
| 7 | +const {} = f(); // error (only in strictNullChecks) |
| 8 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 0)) |
| 9 | + |
| 10 | +const { p1 } = f(); // error |
| 11 | +>p1 : Symbol(p1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 2, 7)) |
| 12 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 0)) |
| 13 | + |
| 14 | +const [] = f(); // error |
| 15 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 0)) |
| 16 | + |
| 17 | +const [e1, e2] = f(); // error |
| 18 | +>e1 : Symbol(e1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 4, 7)) |
| 19 | +>e2 : Symbol(e2, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 4, 10)) |
| 20 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 0, 0)) |
| 21 | + |
| 22 | +// Repro from #43605 |
| 23 | +type Dispatch<A = { type: any; [extraProps: string]: any }> = { <T extends A>(action: T): T }; |
| 24 | +>Dispatch : Symbol(Dispatch, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 4, 21)) |
| 25 | +>A : Symbol(A, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 14)) |
| 26 | +>type : Symbol(type, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 19)) |
| 27 | +>extraProps : Symbol(extraProps, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 32)) |
| 28 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 65)) |
| 29 | +>A : Symbol(A, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 14)) |
| 30 | +>action : Symbol(action, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 78)) |
| 31 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 65)) |
| 32 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 65)) |
| 33 | + |
| 34 | +type IFuncs = { readonly [key: string]: (...p: any) => void }; |
| 35 | +>IFuncs : Symbol(IFuncs, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 94)) |
| 36 | +>key : Symbol(key, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 8, 26)) |
| 37 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 8, 41)) |
| 38 | + |
| 39 | +type IDestructuring<T extends IFuncs> = { readonly [key in keyof T]?: (...p: Parameters<T[key]>) => void }; |
| 40 | +>IDestructuring : Symbol(IDestructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 8, 62)) |
| 41 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 20)) |
| 42 | +>IFuncs : Symbol(IFuncs, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 94)) |
| 43 | +>key : Symbol(key, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 52)) |
| 44 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 20)) |
| 45 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 71)) |
| 46 | +>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --)) |
| 47 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 20)) |
| 48 | +>key : Symbol(key, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 52)) |
| 49 | + |
| 50 | +type Destructuring<T extends IFuncs, U extends IDestructuring<T>> = (dispatch: Dispatch<any>, funcs: T) => U; |
| 51 | +>Destructuring : Symbol(Destructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 107)) |
| 52 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 19)) |
| 53 | +>IFuncs : Symbol(IFuncs, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 7, 94)) |
| 54 | +>U : Symbol(U, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 36)) |
| 55 | +>IDestructuring : Symbol(IDestructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 8, 62)) |
| 56 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 19)) |
| 57 | +>dispatch : Symbol(dispatch, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 69)) |
| 58 | +>Dispatch : Symbol(Dispatch, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 4, 21)) |
| 59 | +>funcs : Symbol(funcs, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 93)) |
| 60 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 19)) |
| 61 | +>U : Symbol(U, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 10, 36)) |
| 62 | + |
| 63 | +const funcs1 = { |
| 64 | +>funcs1 : Symbol(funcs1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 11, 5)) |
| 65 | + |
| 66 | + funcA: (a: boolean): void => {}, |
| 67 | +>funcA : Symbol(funcA, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 11, 16)) |
| 68 | +>a : Symbol(a, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 12, 12)) |
| 69 | + |
| 70 | + funcB: (b: string, bb: string): void => {}, |
| 71 | +>funcB : Symbol(funcB, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 12, 36)) |
| 72 | +>b : Symbol(b, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 13, 12)) |
| 73 | +>bb : Symbol(bb, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 13, 22)) |
| 74 | + |
| 75 | + funcC: (c: number, cc: number, ccc: boolean): void => {}, |
| 76 | +>funcC : Symbol(funcC, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 13, 47)) |
| 77 | +>c : Symbol(c, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 14, 12)) |
| 78 | +>cc : Symbol(cc, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 14, 22)) |
| 79 | +>ccc : Symbol(ccc, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 14, 34)) |
| 80 | + |
| 81 | +}; |
| 82 | +type TFuncs1 = typeof funcs1; |
| 83 | +>TFuncs1 : Symbol(TFuncs1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 15, 2)) |
| 84 | +>funcs1 : Symbol(funcs1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 11, 5)) |
| 85 | + |
| 86 | +declare function useReduxDispatch1<T extends IDestructuring<TFuncs1>>(destructuring: Destructuring<TFuncs1, T>): T; |
| 87 | +>useReduxDispatch1 : Symbol(useReduxDispatch1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 16, 29)) |
| 88 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 17, 35)) |
| 89 | +>IDestructuring : Symbol(IDestructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 8, 62)) |
| 90 | +>TFuncs1 : Symbol(TFuncs1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 15, 2)) |
| 91 | +>destructuring : Symbol(destructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 17, 70)) |
| 92 | +>Destructuring : Symbol(Destructuring, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 9, 107)) |
| 93 | +>TFuncs1 : Symbol(TFuncs1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 15, 2)) |
| 94 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 17, 35)) |
| 95 | +>T : Symbol(T, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 17, 35)) |
| 96 | + |
| 97 | +const {} = useReduxDispatch1( |
| 98 | +>useReduxDispatch1 : Symbol(useReduxDispatch1, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 16, 29)) |
| 99 | + |
| 100 | + (d, f) => ({ |
| 101 | +>d : Symbol(d, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 5)) |
| 102 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 7)) |
| 103 | + |
| 104 | + funcA: (...p) => d(f.funcA(...p)), // p should be inferrable |
| 105 | +>funcA : Symbol(funcA, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 16)) |
| 106 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 20, 16)) |
| 107 | +>d : Symbol(d, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 5)) |
| 108 | +>f.funcA : Symbol(funcA, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 11, 16)) |
| 109 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 7)) |
| 110 | +>funcA : Symbol(funcA, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 11, 16)) |
| 111 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 20, 16)) |
| 112 | + |
| 113 | + funcB: (...p) => d(f.funcB(...p)), |
| 114 | +>funcB : Symbol(funcB, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 20, 42)) |
| 115 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 21, 16)) |
| 116 | +>d : Symbol(d, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 5)) |
| 117 | +>f.funcB : Symbol(funcB, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 12, 36)) |
| 118 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 7)) |
| 119 | +>funcB : Symbol(funcB, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 12, 36)) |
| 120 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 21, 16)) |
| 121 | + |
| 122 | + funcC: (...p) => d(f.funcC(...p)), |
| 123 | +>funcC : Symbol(funcC, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 21, 42)) |
| 124 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 22, 16)) |
| 125 | +>d : Symbol(d, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 5)) |
| 126 | +>f.funcC : Symbol(funcC, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 13, 47)) |
| 127 | +>f : Symbol(f, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 19, 7)) |
| 128 | +>funcC : Symbol(funcC, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 13, 47)) |
| 129 | +>p : Symbol(p, Decl(bindingPatternCannotBeOnlyInferenceSource.ts, 22, 16)) |
| 130 | + |
| 131 | + }) |
| 132 | +); |
| 133 | + |
0 commit comments