Skip to content

Three ways to generate a name in the compiler #2447

Closed
@JsonFreeman

Description

@JsonFreeman

Right now, we have two ways of generating a name in the compiler:

  1. createTempVariable in the emitter
  2. generateUniqueName in utilities.

The second one can further be split into two callers:

  1. getGeneratedNamesForSourceFile in the checker
  2. generateUniqueNameForLocation in the emitter

We also have 3 ways to track whether a name is unique, and both methods of generating a name do all of these:

  1. NodeLinks.generatedNames tracks the names generated for a file, and considers them all used.
  2. tempCount in createTempVariable keeps track of a different set of names per file by using a counter
  3. The ScopeFrame stack in the emitter keeps track of names per scope (lastFrame, currentScopeNames, etc)

All of these things need to be consolidated. There are some desirable qualities we want the solution to have:

  1. Only one way for callers to make a unique name in the compiler.
  2. This way should support the case where the caller prefers some ideal base name to use, and the case where any old name will do.
  3. We need to decide whether uniqueness should be tracked per file or per scope, and treat uniqueness that way consistently throughout the compiler.

Activity

basarat

basarat commented on Mar 20, 2015

@basarat
Contributor

I haven't looked at the code. Hope no one is using Random 🌹

added this to the TypeScript 1.5 milestone on Mar 24, 2015
vladima

vladima commented on Mar 24, 2015

@vladima
Contributor

Should be addressed by #2471

added a commit that references this issue on Mar 24, 2015

Merge pull request #2471 from Microsoft/revisedNameGen2

added
FixedA PR has been merged for this issue
on Mar 24, 2015
locked and limited conversation to collaborators on Jun 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    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

        Participants

        @basarat@mhegazy@vladima@JsonFreeman

        Issue actions

          Three ways to generate a name in the compiler · Issue #2447 · microsoft/TypeScript