Skip to content

"Move to File" refactor errors with JSX #24741

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

Closed
itsMapleLeaf opened this issue Jun 7, 2018 · 0 comments
Closed

"Move to File" refactor errors with JSX #24741

itsMapleLeaf opened this issue Jun 7, 2018 · 0 comments
Labels
Bug A bug in TypeScript Domain: Refactorings e.g. extract to constant or function, rename symbol Fixed A PR has been merged for this issue

Comments

@itsMapleLeaf
Copy link

TypeScript Version: 3.0.0-dev.20180606

Search Terms: "move to file" jsx

Code

index.tsx

import * as React from "react"

export class HasNoJSX extends React.Component {
  render() {
    return "no jsx"
  }
}

export class HasJSX extends React.Component {
  render() {
    return <div>jsx</div>
  }
}

export const SFC = <div>some jsx</div>

tsconfig.json

{
  "compilerOptions": {
    "module": "esnext",
    "moduleResolution": "node",
    "jsx": "react",
    "strict": true,
    "esModuleInterop": true
  }
}

package.json

{
  "name": "ts-move-to-file-jsx-bug",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "react": "^16.4.0"
  },
  "devDependencies": {
    "@types/react": "^16.3.16",
    "typescript": "^3.0.0-dev.20180606"
  }
}

Expected behavior:
When selecting them and triggering the "Move to file" refactor, each class/variable should be moved to their own files, named appropriately.

Actual behavior:

  • Refactor works with HasNoJSX

  • Attempting to refactor with HasJSX shows this error:

[Error  - 12:18:33 AM] 'getEditsForRefactor' request failed with error.
Error processing request. Cannot read property 'text' of undefined
TypeError: Cannot read property 'text' of undefined
    at Object.getTokenPosOfNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:8008:71)
    at TokenObject.TokenOrIdentifierObject.getStart (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:89960:23)
    at processChildNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82308:50)
    at processChildNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82343:48)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82256:21
    at visitNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13177:24)
    at Object.forEachChild (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13545:21)
    at processNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82253:20)
    at processChildNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82306:21)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82254:21
    at visitNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13172:24)
    at Object.forEachChild (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13431:24)
    at processNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82253:20)
    at processChildNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82306:21)
    at processChildNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82343:48)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82256:21
    at visitNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13177:24)
    at Object.forEachChild (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13391:24)
    at processNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82253:20)
    at processChildNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82306:21)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82254:21
    at visitNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13172:24)
    at Object.forEachChild (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13286:21)
    at processNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82253:20)
    at processChildNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82306:21)
    at processChildNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82343:48)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82256:21
    at visitNodes (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13177:24)
    at Object.forEachChild (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:13466:21)
    at processNode (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82253:20)
    at formatSpanWorker (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82120:17)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82102:208
    at Object.getFormattingScanner (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:81092:23)
    at formatSpan (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:82102:31)
    at Object.formatDocument (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:81967:20)
    at Object.newFileChanges (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:83709:45)
    at ChangeTracker.getChanges (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:83669:48)
    at Function.ChangeTracker.with (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:83311:32)
    at Object.getEditsForAction (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:88946:62)
    at Object.getEditsForRefactor (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:84044:41)
    at Object.getEditsForRefactor (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:91368:32)
    at IOSession.Session.getEditsForRefactor (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:97853:59)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:96743:61)
    at d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:98070:88
    at IOSession.Session.executeWithRequestId (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:98061:28)
    at IOSession.Session.executeCommand (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:98070:33)
    at IOSession.Session.onMessage (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:98090:35)
    at Interface.<anonymous> (d:\kingd\code\sandbox\ts-move-to-file-jsx-bug\node_modules\typescript\lib\tsserver.js:99296:27)
    at emitOne (events.js:96:13)
    at Interface.emit (events.js:191:7)
    at Interface._onLine (readline.js:241:10)
    at Interface._normalWrite (readline.js:384:12)
    at Socket.ondata (readline.js:101:10)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at readableAddChunk (_stream_readable.js:178:18)
    at Socket.Readable.push (_stream_readable.js:136:10)
    at Pipe.onread (net.js:560:20)

Related Issues:

@mhegazy mhegazy assigned ghost Jun 7, 2018
@mhegazy mhegazy added this to the TypeScript 2.9.2 milestone Jun 7, 2018
@mhegazy mhegazy added Bug A bug in TypeScript Domain: Refactorings e.g. extract to constant or function, rename symbol labels Jun 7, 2018
@ghost ghost added the Fixed A PR has been merged for this issue label Jun 7, 2018
@ghost ghost closed this as completed in #24765 Jun 7, 2018
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript Domain: Refactorings e.g. extract to constant or function, rename symbol Fixed A PR has been merged for this issue
Projects
None yet
Development

No branches or pull requests

2 participants