From 76a9ac4434e7568769d0eeed3617277895e2e311 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 13 Feb 2018 15:52:35 -0800 Subject: [PATCH] Restrict declaration initializers too --- src/compiler/binder.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index a26a2b0af24..72f4ad03260 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -2409,7 +2409,8 @@ namespace ts { } function isValidInitializer(initializer: Node) { - return initializer.kind === SyntaxKind.ClassExpression || + return initializer === undefined || + initializer.kind === SyntaxKind.ClassExpression || initializer.kind === SyntaxKind.FunctionExpression || initializer.kind === SyntaxKind.ObjectLiteralExpression && (initializer as ObjectLiteralExpression).properties.length === 0 || initializer.kind === SyntaxKind.CallExpression && (skipParentheses((initializer as CallExpression).expression).kind === SyntaxKind.FunctionExpression || @@ -2425,7 +2426,7 @@ namespace ts { propertyAccess.parent.kind === SyntaxKind.PropertyAccessExpression); const isLegalPosition = propertyAccess.parent.kind === SyntaxKind.BinaryExpression ? propertyAccess.parent.parent.parent.kind === SyntaxKind.SourceFile && isValidInitializer((propertyAccess.parent as BinaryExpression).right) : - propertyAccess.parent.parent.kind === SyntaxKind.SourceFile; + propertyAccess.parent.parent.kind === SyntaxKind.SourceFile && isValidInitializer((propertyAccess.parent as VariableDeclaration).initializer); if (!isPrototypeProperty && (!symbol || !(symbol.flags & SymbolFlags.Namespace)) && isLegalPosition) { const flags = SymbolFlags.Module | SymbolFlags.JSContainer; const excludeFlags = SymbolFlags.ValueModuleExcludes & ~SymbolFlags.JSContainer;