Merge pull request #8930 from zhengbli/i8676
Run fixupParentReferences when parsing isolated jsDocComment
This commit is contained in:
commit
131f759c5c
|
@ -440,7 +440,14 @@ namespace ts {
|
|||
|
||||
/* @internal */
|
||||
export function parseIsolatedJSDocComment(content: string, start?: number, length?: number) {
|
||||
return Parser.JSDocParser.parseIsolatedJSDocComment(content, start, length);
|
||||
const result = Parser.JSDocParser.parseIsolatedJSDocComment(content, start, length);
|
||||
if (result && result.jsDocComment) {
|
||||
// because the jsDocComment was parsed out of the source file, it might
|
||||
// not be covered by the fixupParentReferences.
|
||||
Parser.fixupParentReferences(result.jsDocComment);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
|
@ -652,14 +659,14 @@ namespace ts {
|
|||
return node;
|
||||
}
|
||||
|
||||
export function fixupParentReferences(sourceFile: Node) {
|
||||
export function fixupParentReferences(rootNode: Node) {
|
||||
// normally parent references are set during binding. However, for clients that only need
|
||||
// a syntax tree, and no semantic features, then the binding process is an unnecessary
|
||||
// overhead. This functions allows us to set all the parents, without all the expense of
|
||||
// binding.
|
||||
|
||||
let parent: Node = sourceFile;
|
||||
forEachChild(sourceFile, visitNode);
|
||||
let parent: Node = rootNode;
|
||||
forEachChild(rootNode, visitNode);
|
||||
return;
|
||||
|
||||
function visitNode(n: Node): void {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/// <reference path="fourslash.ts"/>
|
||||
|
||||
/////** @template T */
|
||||
////function ident<T>: T {
|
||||
////}
|
||||
|
||||
var c = classification;
|
||||
verify.syntacticClassificationsAre(
|
||||
c.comment("/** "),
|
||||
c.punctuation("@"),
|
||||
c.docCommentTagName("template"),
|
||||
c.typeParameterName("T"),
|
||||
c.comment(" */"),
|
||||
c.keyword("function"),
|
||||
c.identifier("ident"),
|
||||
c.punctuation("<"),
|
||||
c.typeParameterName("T"),
|
||||
c.punctuation(">"),
|
||||
c.punctuation(":"),
|
||||
c.identifier("T"),
|
||||
c.punctuation("{"),
|
||||
c.punctuation("}"));
|
Loading…
Reference in a new issue