Skip to content

OOM heap crash with -d or -w, and --noImplicitThis #29902

Closed

Description

@dasa

TypeScript Version: 3.2 - 3.4.0-dev.20190213

Search Terms:
memory heap crash

Code

function createObj() {
  return {
    func1() {
      return this;
    },
    func2() {
      return this;
    },
    func3() {
      return this;
    },
    func4() {
      return this;
    },
    func5() {
      return this;
    },
    func6() {
      return this;
    },
    func7() {
      return this;
    },
    func8() {
      return this;
    },
    func9() {
      return this;
    }
  };
}

Expected behavior:

Run: tsc --noImplicitThis -d test.ts

No crash. There's no crash when there's only 8 functions, but the generated declaration file is 41 MB!

Actual behavior:

With 9 member functions tsc runs out of memory and crashes.

Playground Link:

Related Issues:

Activity

  1. changed the title [-]OOM heap crash with -d or -w[/-] [+]OOM heap crash with -d or -w, and --noImplicitThis[/+] on Feb 13, 2019
  2. RyanCavanaugh commented on Feb 19, 2019

    @RyanCavanaugh
    Member

    Here's the 3-member version .d.ts output for reference:

    declare function createObj(): {
        func1(): {
            func1(): any;
            func2(): {
                func1(): any;
                func2(): any;
                func3(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
            };
            func3(): {
                func1(): any;
                func2(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
                func3(): any;
            };
        };
        func2(): {
            func1(): {
                func1(): any;
                func2(): any;
                func3(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
            };
            func2(): any;
            func3(): {
                func1(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
                func2(): any;
                func3(): any;
            };
        };
        func3(): {
            func1(): {
                func1(): any;
                func2(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
                func3(): any;
            };
            func2(): {
                func1(): {
                    func1(): any;
                    func2(): any;
                    func3(): any;
                };
                func2(): any;
                func3(): any;
            };
            func3(): any;
        };
    };
  3. RyanCavanaugh commented on Feb 19, 2019

    @RyanCavanaugh
    Member

    I am determined to let the 9-member version of this run to completion on my machine (36 minutes and counting)

  4. added
    SuggestionAn idea for TypeScript
    Needs ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.
    and removed
    BugA bug in TypeScript
    on Feb 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Needs ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.SuggestionAn idea for TypeScript

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions