Repository navigation
Error thrown on async refactoring #27301
Copy link
Copy link
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: LS: Refactoringse.g. extract to constant or function, rename symbole.g. extract to constant or function, rename symbol
Milestone
Description
function delay(millis: number): Promise<void> {
throw "no"
}
main();
function main() {
console.log("Please wait. Loading.");
return delay(500)
.then(() => console.log("."))
.then(() => delay(500))
.then(() => console.log("."))
.then(() => delay(500))
.then(() => console.log("."))
.then(() => delay(500))
.then(() => console.log("All done!"));
}
function main2() {
console.log("Please wait. Loading.");
return delay(500)
.then(() => { console.log("."); return delay(500); })
.then(() => { console.log("."); return delay(500); })
.then(() => { console.log("."); return delay(500); })
}Try to refactor main and main2 to async functions, and expect them to look relatively identical.
Instead, refactoring main2 causes the following error
[Error - 10:33:36 AM] 'getCodeFixes' request failed with error.
Error processing request. Cannot read property 'identifier' of undefined
TypeError: Cannot read property 'identifier' of undefined
at getTransformationBody (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107213:72)
at transformThen (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107126:38)
at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107061:24)
at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107067:24)
at transformThen (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107135:20)
at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107061:24)
at startTransformation (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106889:32)
at visit (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106895:25)
at visitNode (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:15841:24)
at Object.forEachChild (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:16116:24)
at _loop_10 (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106893:20)
at convertToAsyncFunction (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106904:17)
at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106853:96
at Function.ChangeTracker.with (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:105472:17)
at Object.getCodeActions (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106853:64)
at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106422:121
at Object.flatMap (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:499:25)
at Object.getFixes (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106422:23)
at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:115142:35
at Object.flatMap (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:499:25)
at Object.getCodeFixesAtPosition (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:115140:23)
at IOSession.Session.getCodeFixes (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:122942:64)
at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:121806:61)
at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123099:88
at IOSession.Session.executeWithRequestId (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123090:28)
at IOSession.Session.executeCommand (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123099:33)
at IOSession.Session.onMessage (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123119:35)
at Interface.<anonymous> (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:124383:27)
at emitOne (events.js:116:13)
at Interface.emit (events.js:211:7)
at Interface._onLine (readline.js:282:10)
at Interface._normalWrite (readline.js:424:12)
at Socket.ondata (readline.js:141:10)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at Pipe.onread (net.js:594:20)
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: LS: Refactoringse.g. extract to constant or function, rename symbole.g. extract to constant or function, rename symbol
Activity
dhruvrajvanshi commentedon Sep 24, 2018
Can I take a shot at this?
DanielRosenwasser commentedon Sep 25, 2018
Maybe! Ben Lichtman (@uniqueiniquity) can give some context on how approachable this would be to tackle.
uniqueiniquity commentedon Sep 25, 2018
Dhruv Rajvanshi (@dhruvrajvanshi) Thanks for offering to look at this! This seems pretty approachable to me.
I'd start by walking down the exception call stack starting with
startTransformationto get a sense of what part ofmain2is causing the issue, and then going from there. Let me know if there's anything I can help with!uniqueiniquity commentedon Sep 25, 2018
Also, let me know if you think you won't be able to get to it, and I can take over.
dhruvrajvanshi commentedon Sep 27, 2018
Ben Lichtman (@uniqueiniquity) I've made the fix and opened a PR. Please review.
Sorry it took me a while to figure out how to write the test for this :|
The issue was that the last callback didn't have an argument and a not null ! assertion was being used to
cast it away.
Issue #27301: Fixed crash when converting function to async (#27396)
Issue microsoft#27301: Fixed crash when converting function to async (m…
DanielRosenwasser commentedon Oct 11, 2018
3.1 fix is in 045c73a