Repository navigation
Exception in quickInfo with conditional types #21611
Copy link
Copy link
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue
Milestone
Description
TypeScript Version: 2.8.0-dev (master)
Code
interface Awaiters<T> {
0: T extends PromiseLike<any> ? never : T;
1: Awaiter<T, 0>;
[depth: number]: Awaiters<T>[keyof Awaiters<T>];
}
type Awaiter<T, Depth extends number> = T extends PromiseLike<infer U> ? Awaiters<U>[Depth] : never;
type Awaited<T> = Awaiters<T>[keyof Awaiters<T>];
interface BadPromise {
then(onfulfilled: (value: BadPromise ) => void): any;
}
type T1 = Awaited<BadPromise>;Repro steps:
- Open a new TS file in VS Code with the above source text.
- Ensure the VS Code Output window is open with the TypeScript extension output active.
- Hover over
T1above.
Expected behavior:
Quick Info reports type T1 = never;
Actual behavior:
Exception in quickInfo:
[Error - 3:19:57 PM] 'quickinfo' request failed with error.
Error processing request. Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded
at getSymbolLinks (c:\dev\TypeScript\built\local\tsserver.js:21829:32)
at instantiateSymbol (c:\dev\TypeScript\built\local\tsserver.js:27969:25)
at instantiateList (c:\dev\TypeScript\built\local\tsserver.js:27867:34)
at instantiateSignature (c:\dev\TypeScript\built\local\tsserver.js:27963:165)
at getBaseSignature (c:\dev\TypeScript\built\local\tsserver.js:26524:24)
at inferFromSignatures (c:\dev\TypeScript\built\local\tsserver.js:30358:97)
at inferFromObjectTypes (c:\dev\TypeScript\built\local\tsserver.js:30336:21)
at inferFromTypes (c:\dev\TypeScript\built\local\tsserver.js:30278:29)
at inferFromProperties (c:\dev\TypeScript\built\local\tsserver.js:30347:25)
at inferFromObjectTypes (c:\dev\TypeScript\built\local\tsserver.js:30335:21)
at inferFromTypes (c:\dev\TypeScript\built\local\tsserver.js:30278:29)
at inferTypes (c:\dev\TypeScript\built\local\tsserver.js:30129:13)
at getConditionalType (c:\dev\TypeScript\built\local\tsserver.js:27548:17)
at instantiateConditionalType (c:\dev\TypeScript\built\local\tsserver.js:28086:20)
at c:\dev\TypeScript\built\local\tsserver.js:28080:76
at mapType (c:\dev\TypeScript\built\local\tsserver.js:30926:25)
at getConditionalTypeInstantiation (c:\dev\TypeScript\built\local\tsserver.js:28080:28)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28124:28)
at instantiateList (c:\dev\TypeScript\built\local\tsserver.js:27872:41)
at instantiateTypes (c:\dev\TypeScript\built\local\tsserver.js:27881:20)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28109:36)
at instantiateIndexInfo (c:\dev\TypeScript\built\local\tsserver.js:28137:44)
at resolveObjectTypeMembers (c:\dev\TypeScript\built\local\tsserver.js:25386:35)
at resolveTypeReferenceMembers (c:\dev\TypeScript\built\local\tsserver.js:25419:13)
at resolveStructuredTypeMembers (c:\dev\TypeScript\built\local\tsserver.js:25762:25)
at getPropertyOfType (c:\dev\TypeScript\built\local\tsserver.js:26085:32)
at getPropertyTypeForIndexType (c:\dev\TypeScript\built\local\tsserver.js:27363:28)
at getIndexedAccessType (c:\dev\TypeScript\built\local\tsserver.js:27503:20)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28121:28)
at getConditionalType (c:\dev\TypeScript\built\local\tsserver.js:27558:24)
at instantiateConditionalType (c:\dev\TypeScript\built\local\tsserver.js:28086:20)
at c:\dev\TypeScript\built\local\tsserver.js:28080:76
...
at mapType (c:\dev\TypeScript\built\local\tsserver.js:30926:25)
at getConditionalTypeInstantiation (c:\dev\TypeScript\built\local\tsserver.js:28080:28)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28124:28)
at instantiateList (c:\dev\TypeScript\built\local\tsserver.js:27872:41)
at instantiateTypes (c:\dev\TypeScript\built\local\tsserver.js:27881:20)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28109:36)
at instantiateIndexInfo (c:\dev\TypeScript\built\local\tsserver.js:28137:44)
at resolveObjectTypeMembers (c:\dev\TypeScript\built\local\tsserver.js:25386:35)
at resolveTypeReferenceMembers (c:\dev\TypeScript\built\local\tsserver.js:25419:13)
at resolveStructuredTypeMembers (c:\dev\TypeScript\built\local\tsserver.js:25762:25)
at getPropertyOfType (c:\dev\TypeScript\built\local\tsserver.js:26085:32)
at getPropertyTypeForIndexType (c:\dev\TypeScript\built\local\tsserver.js:27363:28)
at getIndexedAccessType (c:\dev\TypeScript\built\local\tsserver.js:27503:20)
at instantiateType (c:\dev\TypeScript\built\local\tsserver.js:28121:28)
at getConditionalType (c:\dev\TypeScript\built\local\tsserver.js:27558:24)
at instantiateConditionalType (c:\dev\TypeScript\built\local\tsserver.js:28086:20)
at c:\dev\TypeScript\built\local\tsserver.js:28080:76
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue
Activity
rbuckton commentedon Feb 3, 2018
There is also a similar error reported in
getApplicableRefactors:mhegazy commentedon Feb 5, 2018
Anders Hejlsberg (@ahejlsberg) can you please take a look.
alitaheri commentedon Feb 6, 2018
I Also got an error which might be related, can't pin down what part of the code causes it:
TS:
2.8.0-dev.20180206mhegazy commentedon Feb 8, 2018
I can not get the exception with latest from master with Ron Buckton (@rbuckton)'s sample. Ali Taheri Moghaddar (@alitaheri) can you give
typescript@nexta try tomorrow, and let us know if you are still seeing this issue? if so a repro would be appreciated.KiaraGrouwstra commentedon Feb 12, 2018
Mohamed Hegazy (@mhegazy) looks like Wesley Wigham (@weswigham) also bumped into this at #21613.