Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

TSLint causes TS features to become unresponsive on incorrect react component syntax. #97

Closed
BuckAMayzing opened this issue Jun 5, 2019 · 1 comment

Comments

@BuckAMayzing
Copy link

I think I've got this broken down to the bare minimum number of steps to reproduce, and it's been happening for a while. I'm wondering if it's related to #55, but I can't guarantee that it is. It might be that this breaks on any sufficient number of TypeScript server errors, but here's the set of steps:

Environment: W10 (multiple editions)
VSCode version: All so far, including the latest insiders
TSLint version: 1.1.0

  1. create tslint.json and ./src/test.tsx files (source below)
  2. open src/test.tsx
  3. wait for language features to initialize
  4. go to the appropriately commented line
  5. enter a letter, delete, and repeat.

After a few times (reliably 5 times for me), the error underlines, outline, autocomplete, and other related features stop responding.

This behavior doesn't occur if the TSLint extension is disabled or not installed.

tslint.json:

{
    "extends": ["tslint:recommended"]
}

test.tsx (NOTE: The outer div seems to be important here. Removing it prevents the crash):

const val: number = 1;

const Component = () => {
    return (
        <div>
            {val === 0 ? (
                "test"
            ) : (
                // enter something here.
                <div className={"something"}>
                </div>
            )}
        </div>
    );
};

export default Component;

@mjbvz
Copy link
Contributor

mjbvz commented Jun 17, 2019

Thanks for the repo steps. After testing this, from the logs I believe this is actually a TS error:

  ERR TypeScript Server Error (3.6.0)
Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia
Error: Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia
    at addSyntheticNodes (tsserver.js:121781:30)
    at createChildren (tsserver.js:121770:9)
    at NodeObject.getChildren (tsserver.js:121714:56)
    at find (tsserver.js:97255:30)
    at find (tsserver.js:97275:32)
    at find (tsserver.js:97275:32)
    at find (tsserver.js:97275:32)
    at find (tsserver.js:97275:32)

This is being tracked upstream by microsoft/TypeScript#25487

@mjbvz mjbvz closed this as completed Jun 17, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants