Prevent type parameter printing from recuring on the same symbol (#31453)

This commit is contained in:
Wesley Wigham 2019-05-20 16:43:55 -07:00 committed by GitHub
parent 9052804576
commit 07d850cf1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View File

@ -4302,6 +4302,11 @@ namespace ts {
function lookupTypeParameterNodes(chain: Symbol[], index: number, context: NodeBuilderContext) {
Debug.assert(chain && 0 <= index && index < chain.length);
const symbol = chain[index];
const symbolId = "" + getSymbolId(symbol);
if (context.typeParameterSymbolList && context.typeParameterSymbolList.get(symbolId)) {
return undefined;
}
(context.typeParameterSymbolList || (context.typeParameterSymbolList = createMap())).set(symbolId, true);
let typeParameterNodes: ReadonlyArray<TypeNode> | ReadonlyArray<TypeParameterDeclaration> | undefined;
if (context.flags & NodeBuilderFlags.WriteTypeParametersInQualifiedName && index < (chain.length - 1)) {
const parentSymbol = symbol;
@ -4628,6 +4633,7 @@ namespace ts {
inferTypeParameters: TypeParameter[] | undefined;
approximateLength: number;
truncating?: boolean;
typeParameterSymbolList?: Map<true>;
}
function isDefaultBindingContext(location: Node) {

View File

@ -0,0 +1,21 @@
/// <reference path="fourslash.ts" />
//// declare namespace AMap {
//// namespace MassMarks {
//// interface Data {
//// style?: number;
//// }
//// }
//// class MassMarks<D extends MassMarks.Data = MassMarks.Data> {
//// constructor(data: D[] | string);
//// clear(): void;
//// }
//// }
////
//// interface MassMarksCustomData extends AMap.MassMarks./*1*/Data {
//// name: string;
//// id: string;
//// }
verify.quickInfoAt("1", "interface AMap.MassMarks<D extends AMap.MassMarks.Data = AMap.MassMarks.Data>.Data");