Closed
Description
TypeScript Version: 3.2.0-dev.201xxxxx
Search Terms:
- checkNestedBlockScopedBinding
- TypeError: Cannot read property 'kind' of undefined
Code
I've yet been unable to isolate a reasonably self-contained example. This involves third party typings for THREE in a specific version that are re-exported via a declare global
and export as namespace
, and apparently in a specific version.
What appears to happen though is that checkNestedBlockScopedBinding
tries to check if the valueDeclaration
is in a catch clause:
if (languageVersion >= ScriptTarget.ES2015 ||
(symbol.flags & (SymbolFlags.BlockScopedVariable | SymbolFlags.Class)) === 0 ||
symbol.valueDeclaration.parent.kind === SyntaxKind.CatchClause) {
return;
}
However valueDeclaration
can be a SourceFile
in this case, which means .parent
is undefined, and thus the .kind
check throws.
Expected behavior:
No crash.
Actual behavior:
Crashes with a stack trace of:
Compilation failed TypeError: Cannot read property 'kind' of undefined
at checkNestedBlockScopedBinding (lib/typescript.js:45938:48)
at checkIdentifier (lib/typescript.js:45844:13)
at checkExpressionWorker (lib/typescript.js:51828:28)
at checkExpression (lib/typescript.js:51800:42)
at checkNonNullExpression (lib/typescript.js:48151:37)
at checkPropertyAccessExpressionOrQualifiedName (lib/typescript.js:48184:28)
at checkPropertyAccessExpression (lib/typescript.js:48177:20)
at checkExpressionWorker (lib/typescript.js:51857:28)
at checkExpression (lib/typescript.js:51800:42)
at checkNonNullExpression (lib/typescript.js:48151:37)
at resolveNewExpression (lib/typescript.js:49546:34)
at resolveSignature (lib/typescript.js:49817:28)
at getResolvedSignature (lib/typescript.js:49847:26)
at checkCallExpression (lib/typescript.js:49939:29)
at checkExpressionWorker (lib/typescript.js:51866:28)
at checkExpression (lib/typescript.js:51800:42)
at checkExpressionCached (lib/typescript.js:51646:38)
at getTypeOfExpression (lib/typescript.js:51767:28)
at checkDeclarationInitializer (lib/typescript.js:51657:24)
at getTypeForVariableLikeDeclaration (lib/typescript.js:35286:28)
at getWidenedTypeForVariableLikeDeclaration (lib/typescript.js:35570:56)
at getTypeOfVariableOrParameterOrPropertyWorker (lib/typescript.js:35684:24)
at getTypeOfVariableOrParameterOrProperty (lib/typescript.js:35606:48)
at getTypeOfSymbol (lib/typescript.js:35895:24)
at checkVariableLikeDeclaration (lib/typescript.js:54098:41)
at checkVariableDeclaration (lib/typescript.js:54171:20)
at checkSourceElement (lib/typescript.js:56192:28)
at Object.forEach (lib/typescript.js:210:30)
at checkVariableStatement (lib/typescript.js:54181:16)
at checkSourceElement (lib/typescript.js:56161:28)
at Object.forEach (lib/typescript.js:210:30)
at checkSourceFileWorker (lib/typescript.js:56360:20)
at checkSourceFile (lib/typescript.js:56332:13)
at getDiagnosticsWorker (lib/typescript.js:56407:17)
at Object.getDiagnostics (lib/typescript.js:56393:24)
at lib/typescript.js:87124:85
at runWithCancellationToken (lib/typescript.js:87090:24)
at getSemanticDiagnosticsForFileNoCache (lib/typescript.js:87113:20)
at getAndCacheDiagnostics (lib/typescript.js:87361:26)
at getSemanticDiagnosticsForFile (lib/typescript.js:87110:20)
at getDiagnosticsHelper (lib/typescript.js:87052:24)
at Object.getSemanticDiagnostics (lib/typescript.js:87065:20)