Skip to content

Stack overflow with circular mapped type and conditional type #26448

Closed

Description

From https://stackoverflow.com/questions/51845766.

TypeScript Version: master (cea4838)

Search Terms: RangeError stack overflow crash getConstraintOfDistributiveConditionalType getConstraintOfConditionalType getConstraintOfType circular conditional mapped lookup type

Code

type Cond<T> = T extends number ? number : never;
declare function function1<T extends {[K in keyof T]: Cond<T[K]>}>(): T[keyof T]["foo"];

Expected behavior: Compilation completes.

Actual behavior:

REDACTED/typescript/built/local/tsc.js:83794
                throw e;
                ^

RangeError: Maximum call stack size exceeded
    at getSimplifiedIndexedAccessType (REDACTED/typescript/built/local/tsc.js:37856:48)
    at getSimplifiedType (REDACTED/typescript/built/local/tsc.js:37852:63)
    at getConstraintOfDistributiveConditionalType (REDACTED/typescript/built/local/tsc.js:35728:54)
    at getConstraintOfConditionalType (REDACTED/typescript/built/local/tsc.js:35740:20)
    at getConstraintOfType (REDACTED/typescript/built/local/tsc.js:35701:62)
    at getConstraintOfDistributiveConditionalType (REDACTED/typescript/built/local/tsc.js:35728:34)
    at getConstraintOfConditionalType (REDACTED/typescript/built/local/tsc.js:35740:20)
    at getConstraintOfType (REDACTED/typescript/built/local/tsc.js:35701:62)
    at getConstraintOfDistributiveConditionalType (REDACTED/typescript/built/local/tsc.js:35728:34)
    at getConstraintOfConditionalType (REDACTED/typescript/built/local/tsc.js:35740:20)

Playground Link: N/A

Related Issues: Conceivably #22950

Activity

  1. ghost added
    BugA bug in TypeScript
    on Aug 14, 2018
  2. locked as resolved and limited conversation to collaborators on Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugA bug in TypeScriptFixedA PR has been merged for this issue

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions