From 1a20b6a7c337d62a42d22e9e050bf64dc78f6679 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Thu, 17 Aug 2017 13:23:11 -0700 Subject: [PATCH] Add support for walking IndexTypes, IndexedAccessTypes, and MappedTypes. --- src/compiler/symbolWalker.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/compiler/symbolWalker.ts b/src/compiler/symbolWalker.ts index 39f7f131c37..7f1745b8742 100644 --- a/src/compiler/symbolWalker.ts +++ b/src/compiler/symbolWalker.ts @@ -53,6 +53,9 @@ namespace ts { if (objectFlags & ObjectFlags.Reference) { visitTypeReference(type as TypeReference); } + if (objectFlags & ObjectFlags.Mapped) { + visitMappedType(type as MappedType); + } if (objectFlags & (ObjectFlags.Class | ObjectFlags.Interface)) { visitInterfaceType(type as InterfaceType); } @@ -66,6 +69,12 @@ namespace ts { if (type.flags & TypeFlags.UnionOrIntersection) { visitUnionOrIntersectionType(type as UnionOrIntersectionType); } + if (type.flags & TypeFlags.Index) { + visitIndexType(type as IndexType); + } + if (type.flags & TypeFlags.IndexedAccess) { + visitIndexedAccessType(type as IndexedAccessType); + } } function visitTypeList(types: Type[]): void { @@ -90,6 +99,23 @@ namespace ts { visitTypeList(type.types); } + function visitIndexType(type: IndexType): void { + visitType(type.type); + } + + function visitIndexedAccessType(type: IndexedAccessType): void { + visitType(type.objectType); + visitType(type.indexType); + visitType(type.constraint); + } + + function visitMappedType(type: MappedType): void { + visitType(type.typeParameter); + visitType(type.constraintType); + visitType(type.templateType); + visitType(type.modifiersType); + } + function visitSignature(signature: Signature): void { if (signature.typePredicate) { visitType(signature.typePredicate.type);