Skip to content

Commit

Permalink
Prevent type parameter printing from recuring on the same symbol (#31453
Browse files Browse the repository at this point in the history
)
  • Loading branch information
weswigham committed May 20, 2019
1 parent 9052804 commit 07d850c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/compiler/checker.ts
Expand Up @@ -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;
Expand Down Expand Up @@ -4628,6 +4633,7 @@ namespace ts {
inferTypeParameters: TypeParameter[] | undefined;
approximateLength: number;
truncating?: boolean;
typeParameterSymbolList?: Map<true>;
}

function isDefaultBindingContext(location: Node) {
Expand Down
@@ -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");

0 comments on commit 07d850c

Please sign in to comment.