From 69249cbed726c60a1bc900f9ff72c9e2e44b8d5e Mon Sep 17 00:00:00 2001 From: Jason Killian Date: Thu, 27 Aug 2015 11:36:57 -0400 Subject: [PATCH 1/2] Propagate namespace flag to namespaces nested with dot syntax --- src/compiler/parser.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 25b38277991..3ece155a8c6 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4941,12 +4941,13 @@ namespace ts { function parseModuleOrNamespaceDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, flags: NodeFlags): ModuleDeclaration { let node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + let namespaceFlag = flags & NodeFlags.Namespace; node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(SyntaxKind.DotToken) - ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, NodeFlags.Export) + ? parseModuleOrNamespaceDeclaration(getNodePos(), /*decorators*/ undefined, /*modifiers*/ undefined, NodeFlags.Export | namespaceFlag) : parseModuleBlock(); return finishNode(node); } From 4db535d9497d4edffbbe840473c704c71ba0fc50 Mon Sep 17 00:00:00 2001 From: Jason Killian Date: Thu, 27 Aug 2015 14:04:00 -0400 Subject: [PATCH 2/2] Add comment --- src/compiler/parser.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 3ece155a8c6..350b9d450b8 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4941,6 +4941,8 @@ namespace ts { function parseModuleOrNamespaceDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, flags: NodeFlags): ModuleDeclaration { let node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + // If we are parsing a dotted namespace name, we want to + // propagate the 'Namespace' flag across the names if set. let namespaceFlag = flags & NodeFlags.Namespace; node.decorators = decorators; setModifiers(node, modifiers);