Skip to content

Conversation

@weswigham
Copy link
Member

Fixes #41258

@typescript-bot typescript-bot added Author: Team For Milestone Bug PRs that fix a bug with a specific milestone labels Dec 2, 2020
@weswigham weswigham force-pushed the implements-jsdoc-type-params branch from 6e9b462 to d5280d0 Compare December 2, 2020 20:49
Copy link
Member

@sandersn sandersn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One question about what trackExistingEntityName can do

return cleanup(/*result*/ undefined);
}
}
return cleanup(factory.createExpressionWithTypeArguments(expr, map(e.typeArguments, a => serializeExistingTypeNode(context, a, includePrivateSymbol, bundled) || typeToTypeNodeHelper(getTypeFromTypeNode(a), context))));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this is the best way to break up this line, but it's what I ended up doing so I could read it.

Suggested change
return cleanup(factory.createExpressionWithTypeArguments(expr, map(e.typeArguments, a => serializeExistingTypeNode(context, a, includePrivateSymbol, bundled) || typeToTypeNodeHelper(getTypeFromTypeNode(a), context))));
return cleanup(factory.createExpressionWithTypeArguments(expr,
map(e.typeArguments, a =>
serializeExistingTypeNode(context, a, includePrivateSymbol, bundled)
|| typeToTypeNodeHelper(getTypeFromTypeNode(a), context))));

return cleanup(factory.createExpressionWithTypeArguments(expr, map(e.typeArguments, a => serializeExistingTypeNode(context, a, includePrivateSymbol, bundled) || typeToTypeNodeHelper(getTypeFromTypeNode(a), context))));

function cleanup<T>(result: T): T {
context.enclosingDeclaration = oldEnclosing;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wtb dynamic scope macro

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean... try...finally is that, but has bad perf implications last I checked.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that gives you the control flow, but not the scoping behaviour for variables. I'm talking something like special in Common Lisp, which would allow the assignment to context.enclosingDeclaration on line 6733 to be popped off the stack at the end of the scope instead of requiring the oldEnclosing=context.enclosing/context.enclosing=oldEnclosing bracketing to be manually written.

const baseTypes = getBaseTypes(classType);
const implementsExpressions = mapDefined(getImplementsTypes(classType), serializeImplementedType);
const originalImplements = originalDecl && getEffectiveImplementsTypeNodes(originalDecl);
const implementsExpressions = originalImplements && sanitizeJSDocImplements(originalImplements) || mapDefined(getImplementsTypes(classType), serializeImplementedType);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

might be nice to break this line too

@weswigham weswigham merged commit 69143ec into microsoft:master Dec 8, 2020
@weswigham weswigham deleted the implements-jsdoc-type-params branch December 8, 2020 20:16
@microsoft microsoft locked as resolved and limited conversation to collaborators Oct 21, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Author: Team For Milestone Bug PRs that fix a bug with a specific milestone

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Generated .d.ts files from JS project are invalid

4 participants