Skip to content

TSC crashes during binding in UWP JS project #34672

Closed

Description

TypeScript Version: 3.7.1-rc

Search Terms:
bindSpecialPropertyAssignment
Repro Instructions
In Visual Studio 2017:

  1. Create a WinJS APP (Universal Windows) project.
  2. Add a TypeScript JSON Configuration file in project.
  3. Delete all code in "tsconfig.json" and add code below:
    {
    "compilerOptions": {
    "module": "commonjs",
    "allowJs": true,
    "outDir": "out",
    "jsx": "react"
    },
    "exclude": [
    "node_modules",
    "wwwroot",
    "out"
    ],
    "compileOnSave": true,
    "typingOptions": {
    "enableAutoDiscovery": true
    }
    }
  4. Build project.

Expected behavior:
Build successful.
Actual behavior:
TSC crashes with the following stack:

1>    Unknown output:             throw e;
1>    Unknown output:             ^
1>    Unknown output:     at Object.cast (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:1309:25)
1>    Unknown output:     at bindSpecialPropertyAssignment (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:31379:53)
1>    Unknown output:     at bindWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:30946:29)
1>    Unknown output:     at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:30825:13)
1>    Unknown output:     at bindExpressionStatement (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:30033:13)
1>    Unknown output:     at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:29494:21)
1>    Unknown output:     at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:29415:17)
1>    Unknown output:     at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:30836:21)
1>    Unknown output:     at C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:29421:94
1>    Unknown output:     at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsc.js:29437:21)

Activity

  1. DanielRosenwasser commented on Oct 23, 2019

    @DanielRosenwasser
    Member

    Any chance you can provide the code that comes out of the box?

  2. added
    BugA bug in TypeScript
    CrashFor flagging bugs which are compiler or service crashes or unclean exits, rather than bad output
    on Oct 23, 2019
  3. uniqueiniquity commented on Oct 23, 2019

    @uniqueiniquity
    ContributorAuthor

    It's also crashing the language service (as one would expect).
    Will provide the code in a sec:

    The JavaScript and TypeScript language service has been disabled due to an error. You may see reduced IntelliSense support for your project. Please try reloading your solution to reenable the language service.
    Error processing request. Debug Failure. Invalid cast. The supplied value [object Object] did not pass the test 'isBindableStaticAccessExpression'.
    Error: Debug Failure. Invalid cast. The supplied value [object Object] did not pass the test 'isBindableStaticAccessExpression'.
        at Object.cast (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:1333:25)
        at bindSpecialPropertyAssignment (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:31403:53)
        at bindWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30970:29)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30849:13)
        at bindExpressionStatement (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30057:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29518:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29445:94
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at bindEachFunctionsFirst (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29445:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29561:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at visitNode (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17572:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17702:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bindContainer (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29385:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30863:21)
        at C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29444:94
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at bindEachFunctionsFirst (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29444:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29561:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at visitNode (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17572:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17702:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bindContainer (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29385:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30863:21)
        at C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29444:94
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at bindEachFunctionsFirst (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29444:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29561:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at visitNode (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17572:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17702:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bindContainer (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29385:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30863:21)
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at visitNodes (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17577:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17765:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindCallExpressionFlow (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30314:21)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29546:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at visitNode (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17572:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17659:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at visitNodes (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17577:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17751:24)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bindContainer (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29420:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30863:21)
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at visitNodes (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17577:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17765:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindCallExpressionFlow (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30314:21)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29546:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at bindExpressionStatement (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30057:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29518:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29445:94
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at bindEachFunctionsFirst (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29445:13)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29561:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30860:21)
        at visitNode (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17572:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17702:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29564:21)
        at bindChildren (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29439:17)
        at bindContainer (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29385:17)
        at bind (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30863:21)
        at bindEach (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29461:21)
        at visitNodes (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17577:24)
        at Object.forEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:17765:21)
        at bindEachChild (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29469:16)
        at bindCallExpressionFlow (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:30314:21)
        at bindChildrenWorker (C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.7\tsserver.js:29546:21)
    
    
  4. uniqueiniquity commented on Oct 23, 2019

    @uniqueiniquity
    ContributorAuthor

    Here's all the .js and .d.ts files included in the project when running with 3.6.
    371crash.zip

  5. DanielRosenwasser commented on Oct 23, 2019

    @DanielRosenwasser
    Member

    Reduced repro in a JS file:

    var indexMap = {};
    indexMap[-1] = 0;
  6. minestarks commented on Dec 17, 2019

    @minestarks
    Contributor
  7. weswigham commented on Dec 17, 2019

    @weswigham
    Member

    Hm, Daniel Rosenwasser (@DanielRosenwasser) 's reduced repro is definitely fixed, and I'm not seeing an editor crash with the repro Ben Lichtman (@uniqueiniquity) linked anymore, at least not with the latest builds of master. Do we know more?

  8. minestarks commented on Dec 17, 2019

    @minestarks
    Contributor

    Possibly. What kind of data might help? With bugs from telemetry, we don't have the source code available but we can look at patterns to help narrow down a repro. If you need to collect more context we can look into adding better error reporting for the next iteration. Just need to know what kind of information would help you investigate.

  9. weswigham commented on Dec 18, 2019

    @weswigham
    Member

    I mean, it's strange, because our check to even attempt a special property bind is

    if (isBindableStaticNameExpression(lhs, /*excludeThisKeyword*/ true) || (isElementAccessExpression(lhs) && isDynamicName(lhs) && lhs.expression.kind !== SyntaxKind.ThisKeyword)) {

    and our two covered cases here are supposed to be hasDynamicName(node) and isBindableStaticAccessExpression(node.left). All I can think of is some mismatch between hasDynamicName(node) and isDynamicName(lhs); but I can't think of any code structure that'd cause such a mismatch to make a repro. Honestly the AST/source of node around the assertion failure would be nice.

  10. minestarks commented on Dec 18, 2019

    @minestarks
    Contributor

    Any chance this is related to #35730 ? That also has to do with dynamic names in accessors and that was fixed in 3.7.3.

    I will follow up on how we can collect contextual information for debugging while keeping in line with privacy guidelines.

  11. weswigham commented on Dec 18, 2019

    @weswigham
    Member

    ? The PR you linked just merged today?

  12. minestarks commented on Dec 18, 2019

    @minestarks
    Contributor

    Sorry I have no idea how I ended up pasting that number. I meant to link to #35630 . I was wondering if the bugs may be related since that fix was for a bug that was also occurring in 3.7.3 in property accessors.

  13. minestarks commented on Jan 22, 2020

    @minestarks
    Contributor

    Wesley Wigham (@weswigham) any more info you need on this?

  14. weswigham commented on Feb 7, 2020

    @weswigham
    Member

    Ben Lichtman (@uniqueiniquity) is this still reproducible with the js in the UWP app template? If so, can I just get a copy of the TS+JS in that template? If not, and it's just that we're still getting similar hits in telemetry: ??? Is this still persisting in current telemetry? I could add some slightly more helpful information to the assertion failure.

  15. uniqueiniquity commented on Feb 7, 2020

    @uniqueiniquity
    ContributorAuthor

    Wesley Wigham (@weswigham) Nope, that template is fine in 3.7.4 and in 3.8.1.

  16. locked as resolved and limited conversation to collaborators on Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugA bug in TypeScriptCrashFor flagging bugs which are compiler or service crashes or unclean exits, rather than bad output

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions