@@ -424,9 +424,8 @@ namespace ts {
424424 return node . kind === SyntaxKind . VariableDeclaration && node . parent . kind === SyntaxKind . CatchClause ;
425425 }
426426
427- export function isAmbientModule ( node : Node ) : boolean {
428- return node && isModuleDeclaration ( node ) &&
429- ( node . name . kind === SyntaxKind . StringLiteral || isGlobalScopeAugmentation ( node ) ) ;
427+ export function isAmbientModule ( node : Node ) : node is AmbientModuleDeclaration {
428+ return isModuleDeclaration ( node ) && ( node . name . kind === SyntaxKind . StringLiteral || isGlobalScopeAugmentation ( node ) ) ;
430429 }
431430
432431 export function isModuleWithStringLiteralName ( node : Node ) : node is ModuleDeclaration {
@@ -457,18 +456,19 @@ namespace ts {
457456 return ! ! ( module . flags & NodeFlags . GlobalAugmentation ) ;
458457 }
459458
460- export function isExternalModuleAugmentation ( node : Node ) : boolean {
459+ export function isExternalModuleAugmentation ( node : Node ) : node is AmbientModuleDeclaration {
460+ return isAmbientModule ( node ) && isModuleAugmentationExternal ( node ) ;
461+ }
462+
463+ export function isModuleAugmentationExternal ( node : AmbientModuleDeclaration ) {
461464 // external module augmentation is a ambient module declaration that is either:
462465 // - defined in the top level scope and source file is an external module
463466 // - defined inside ambient module declaration located in the top level scope and source file not an external module
464- if ( ! node || ! isAmbientModule ( node ) ) {
465- return false ;
466- }
467467 switch ( node . parent . kind ) {
468468 case SyntaxKind . SourceFile :
469- return isExternalModule ( < SourceFile > node . parent ) ;
469+ return isExternalModule ( node . parent ) ;
470470 case SyntaxKind . ModuleBlock :
471- return isAmbientModule ( node . parent . parent ) && ! isExternalModule ( < SourceFile > node . parent . parent . parent ) ;
471+ return isAmbientModule ( node . parent . parent ) && isSourceFile ( node . parent . parent . parent ) && ! isExternalModule ( node . parent . parent . parent ) ;
472472 }
473473 return false ;
474474 }
0 commit comments