Typescript: Cannot read property 'parent' of undefined in collectEnclosingScopes

Created on 21 Mar 2019  ·  3Comments  ·  Source: microsoft/TypeScript


TypeScript Version: 3.4.0-rc

Bug

While editing some code in VS Code, I saw this error. Sorry no repo steps yet

  ERR TypeScript Server Error (3.4.0-rc)
Cannot read property 'parent' of undefined
TypeError: Cannot read property 'parent' of undefined
    at collectEnclosingScopes (tsserver.js:117195:127)
    at getPossibleExtractionsWorker (tsserver.js:117275:30)
    at getPossibleExtractions (tsserver.js:117232:26)
    at Object.getAvailableActions (tsserver.js:116745:35)
    at tsserver.js:111488:128
    at getIterator (tsserver.js:625:23)
    at Object.next (tsserver.js:620:35)
    at Object.arrayFrom (tsserver.js:1253:32)
    at Object.getApplicableRefactors (tsserver.js:111487:23)
    at Proxy.getApplicableRefactors (tsserver.js:121287:32)
    at IOSession.Session.getApplicableRefactors (tsserver.js:130013:53)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (tsserver.js:128853:61)
    at tsserver.js:130237:88
    at IOSession.Session.executeWithRequestId (tsserver.js:130228:28)
    at IOSession.Session.executeCommand (tsserver.js:130237:33)
    at IOSession.Session.onMessage (tsserver.js:130259:35)
    at Interface.<anonymous> (tsserver.js:131556:27)
    at Interface.emit (events.js:182:13)
    at Interface._onLine (readline.js:290:10)
    at Interface._normalWrite (readline.js:433:12)
    at Socket.ondata (readline.js:149:10)
    at Socket.emit (events.js:182:13)
    at addChunk (_stream_readable.js:279:12)
    at readableAddChunk (_stream_readable.js:264:11)
    at Socket.Readable.push (_stream_readable.js:219:10)
    at Pipe.onread (net.js:636:20): Error: TypeScript Server Error (3.4.0-rc)
Bug

Most helpful comment

I also received a similar error:

TypeScript Versions: 3.7.1-rc, 3.7.2, 3.7.3-insiders.20191123

No error occurs <=3.6.4

TypeError: Cannot read property 'parent' of undefined
    at Object.getDeclarationOfExpando (/<redacted>/node_modules/typescript/lib/tsc.js:8604:19)
    at getTypeOfFuncClassEnumModule (/<redacted>/node_modules/typescript/lib/tsc.js:32596:40)
    at getTypeOfSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:32702:24)
    at getExternalModuleMember (/<redacted>/node_modules/typescript/lib/tsc.js:28512:64)
    at getTargetOfExportSpecifier (/<redacted>/node_modules/typescript/lib/tsc.js:28557:17)
    at getTargetOfAliasDeclaration (/<redacted>/node_modules/typescript/lib/tsc.js:28600:28)
    at resolveAlias (/<redacted>/node_modules/typescript/lib/tsc.js:28633:30)
    at resolveSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:28623:67)
    at getSymbolIfSameReference (/<redacted>/node_modules/typescript/lib/tsc.js:29170:33)
    at /<redacted>/node_modules/typescript/lib/tsc.js:29164:21

All 3 comments

The only place this could happen in the code is here:

        while (true) {
            current = current.parent;
            // A function parameter's initializer is actually in the outer scope, not the function declaration
            if (current.kind === SyntaxKind.Parameter) {
                // Skip all the way to the outer scope of the function that declared this parameter
                current = findAncestor(current, parent => isFunctionLikeDeclaration(parent))!.parent;
            }

I'm guessing we found a parameter inside a JSDoc near the top level and then tried to walk up to the enclosing function decl, but didn't find one and bottomed out.

findAncestor(...)! is very suspect and it'd be nice to ban it...

I got a similar error:

Version: typescript 3.7.0-dev.20191017

ERROR in ./node_modules/hammerjs/hammer.js                                         
Module build failed (from ./node_modules/ts-loader/index.js):                       
TypeError: Cannot read property 'parent' of undefined                               
    at getOuterTypeParameters (/<redacted>/node_modules/typescript/lib/typescript.js:39886:29)                                   
    at getOuterTypeParametersOfClassOrInterface (/<redacted>/node_modules/typescript/lib/typescript.js:39944:20)
    at getDeclaredTypeOfClassOrInterface (/<redacted>/node_modules/typescript/lib/typescript.js:40217:43)
    at createAnonymousTypeNode (/<redacted>/node_modules/typescript/lib/typescript.js:36601:59)
    at typeToTypeNodeHelper (/<redacted>/node_modules/typescript/lib/typescript.js:36547:28)                                     
    at /<redacted>/node_modules/typescript/lib/typescript.js:36336:106
    at withContext (/<redacted>/node_modules/typescript/lib/typescript.js:36381:37)
    at Object.typeToTypeNode (/<redacted>/node_modules/typescript/lib/typescript.js:36336:28)
    at typeToString (/<redacted>/node_modules/typescript/lib/typescript.js:36303:40)                                             
    at reportNonexistentProperty (/<redacted>/node_modules/typescript/lib/typescript.js:54143:165)

I also received a similar error:

TypeScript Versions: 3.7.1-rc, 3.7.2, 3.7.3-insiders.20191123

No error occurs <=3.6.4

TypeError: Cannot read property 'parent' of undefined
    at Object.getDeclarationOfExpando (/<redacted>/node_modules/typescript/lib/tsc.js:8604:19)
    at getTypeOfFuncClassEnumModule (/<redacted>/node_modules/typescript/lib/tsc.js:32596:40)
    at getTypeOfSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:32702:24)
    at getExternalModuleMember (/<redacted>/node_modules/typescript/lib/tsc.js:28512:64)
    at getTargetOfExportSpecifier (/<redacted>/node_modules/typescript/lib/tsc.js:28557:17)
    at getTargetOfAliasDeclaration (/<redacted>/node_modules/typescript/lib/tsc.js:28600:28)
    at resolveAlias (/<redacted>/node_modules/typescript/lib/tsc.js:28633:30)
    at resolveSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:28623:67)
    at getSymbolIfSameReference (/<redacted>/node_modules/typescript/lib/tsc.js:29170:33)
    at /<redacted>/node_modules/typescript/lib/tsc.js:29164:21
Was this page helpful?
0 / 5 - 0 ratings

Related issues

jonathandturner picture jonathandturner  ·  147Comments

OliverJAsh picture OliverJAsh  ·  242Comments

disshishkov picture disshishkov  ·  224Comments

yortus picture yortus  ·  157Comments

Gaelan picture Gaelan  ·  231Comments