Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Type this in more constructor functions #39447

Merged
merged 6 commits into from
Jul 8, 2020
Merged

Commits on Jul 6, 2020

  1. Type this in more constructor functions

    Previously,  `this: this` in constructor functions only when there was
    an explicit `@constructor` tag on the function. Now, `this: this` for
    any function that's known to be a constructor function.
    
    This improves completions inside constructor functions; also note that
    previously the compiler *did* type `this: this` inside methods of constructor
    functions, so this fix makes us more consistent. This is reflected in
    the large number of baselines that improve.
    
    The fix is a simple switch to `isJSConstructor`, which is the standard
    way to detect constructor functions. I'm not sure why the original PR
    didn't use this method.
    
    I remember discussing this limitation in the original bug, #25979, and
    I guess I decided that it made sense. But I was heavily primed by the bug's
    framing of the problem in terms of `noImplicitThis`, which *should*
    require an explicit `@constructor` tag.
    
    With better typing comes better detection of `@readonly` assignment; I
    had to fix the readonly detection code to use `isJSConstructor` as well.
    sandersn committed Jul 6, 2020
    Configuration menu
    Copy the full SHA
    360e1b1 View commit details
    Browse the repository at this point in the history
  2. Remove Add @Class tag fix for noImplicitThis.

    The new rules mean that it never applies. It's possible that it should
    apply to functions like
    
    ```js
    function f() {
      this.init()
    }
    ```
    
    In which `init` is never defined, but I think this program is incomplete
    enough that not offering the fix is fine.
    sandersn committed Jul 6, 2020
    Configuration menu
    Copy the full SHA
    d5fcf9f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    de189f1 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    5b083a0 View commit details
    Browse the repository at this point in the history

Commits on Jul 7, 2020

  1. Configuration menu
    Copy the full SHA
    21daffd View commit details
    Browse the repository at this point in the history

Commits on Jul 8, 2020

  1. Fix precedence of @this

    Previously, both `@class` and `@this` in a jsdoc would cause the `@this`
    annotation to be ignored. This became a worse problem with this PR,
    because `this` is correctly typed even without the annotation.
    
    This commit makes sure that `@this` is checked first and used if
    present.
    sandersn committed Jul 8, 2020
    Configuration menu
    Copy the full SHA
    aa5af56 View commit details
    Browse the repository at this point in the history