Skip to content

Commit 88e0434

Browse files
committed
Don't skip in tsserver or if comment contains @link/@see
1 parent 5d585f6 commit 88e0434

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44038,6 +44038,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4403844038

4403944039
function checkSourceElementWorker(node: Node): void {
4404044040
if (canHaveJSDoc(node)) {
44041+
// TODO: This part still needs to be disabled for tsc in a lazy-jsdoc-parsing build
4404144042
forEach(node.jsDoc, ({ comment, tags }) => {
4404244043
checkJSDocCommentWorker(comment);
4404344044
forEach(tags, tag => {

src/compiler/parser.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,6 +1413,7 @@ namespace Parser {
14131413
let IdentifierConstructor: new (kind: SyntaxKind.Identifier, pos: number, end: number) => Identifier;
14141414
let PrivateIdentifierConstructor: new (kind: SyntaxKind.PrivateIdentifier, pos: number, end: number) => PrivateIdentifier;
14151415
let SourceFileConstructor: new (kind: SyntaxKind.SourceFile, pos: number, end: number) => SourceFile;
1416+
let isInTsserver = true;
14161417

14171418
function countNode(node: Node) {
14181419
nodeCount++;
@@ -1659,6 +1660,7 @@ namespace Parser {
16591660
IdentifierConstructor = objectAllocator.getIdentifierConstructor();
16601661
PrivateIdentifierConstructor = objectAllocator.getPrivateIdentifierConstructor();
16611662
SourceFileConstructor = objectAllocator.getSourceFileConstructor();
1663+
isInTsserver = !!(new NodeConstructor(0, 0, 0).constructor);
16621664

16631665
fileName = normalizePath(_fileName);
16641666
sourceText = _sourceText;
@@ -1759,13 +1761,20 @@ namespace Parser {
17591761
}
17601762

17611763
function withJSDoc<T extends HasJSDoc>(node: T, hasJSDoc: boolean): T {
1762-
return hasJSDoc && (node.flags & NodeFlags.JavaScriptFile) ? addJSDocComment(node) : node;
1764+
return hasJSDoc ? addJSDocComment(node) : node;
1765+
}
1766+
1767+
function shouldCheckJSDoc<T extends HasJSDoc>(node: T, comment: ts.CommentRange) {
1768+
if (isInTsserver) return true;
1769+
if (node.flags & NodeFlags.JavaScriptFile) return true;
1770+
const i = sourceText.indexOf("@link", comment.pos)
1771+
if (comment.pos < i && i < comment.end) return true;
17631772
}
17641773

17651774
let hasDeprecatedTag = false;
17661775
function addJSDocComment<T extends HasJSDoc>(node: T): T {
17671776
Debug.assert(!node.jsDoc); // Should only be called once per node
1768-
const jsDoc = mapDefined(getJSDocCommentRanges(node, sourceText), comment => JSDocParser.parseJSDocComment(node, comment.pos, comment.end - comment.pos));
1777+
const jsDoc = mapDefined(getJSDocCommentRanges(node, sourceText), comment => shouldCheckJSDoc(node, comment) && JSDocParser.parseJSDocComment(node, comment.pos, comment.end - comment.pos));
17691778
if (jsDoc.length) node.jsDoc = jsDoc;
17701779
if (hasDeprecatedTag) {
17711780
hasDeprecatedTag = false;

0 commit comments

Comments
 (0)