From a87b267fba7e4f108d50b5fd30a1b3f976a638af Mon Sep 17 00:00:00 2001 From: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com> Date: Wed, 8 Nov 2023 18:37:50 -0500 Subject: [PATCH] fix: treat primitives as references instead of content (#9932) * fix: treat primitives as references instead of content * chore: add typeof keyword * fix: add missing keywords --- .../src/generators/ExcerptBuilder.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/api-extractor/src/generators/ExcerptBuilder.ts b/packages/api-extractor/src/generators/ExcerptBuilder.ts index a250d95e8..39ea83bf5 100644 --- a/packages/api-extractor/src/generators/ExcerptBuilder.ts +++ b/packages/api-extractor/src/generators/ExcerptBuilder.ts @@ -135,6 +135,27 @@ export class ExcerptBuilder { return { startIndex: 0, endIndex: 0, typeParameters: [] }; } + public static isPrimitiveKeyword(node: ts.Node): boolean { + switch (node.kind) { + case ts.SyntaxKind.AnyKeyword: + case ts.SyntaxKind.BigIntKeyword: + case ts.SyntaxKind.BooleanKeyword: + case ts.SyntaxKind.NeverKeyword: + case ts.SyntaxKind.NumberKeyword: + case ts.SyntaxKind.ObjectKeyword: + case ts.SyntaxKind.StringKeyword: + case ts.SyntaxKind.SymbolKeyword: + case ts.SyntaxKind.UnknownKeyword: + case ts.SyntaxKind.VoidKeyword: + case ts.SyntaxKind.TypeOfKeyword: + case ts.SyntaxKind.UndefinedKeyword: + case ts.SyntaxKind.NullKeyword: + return true; + default: + return false; + } + } + private static _buildSpan(excerptTokens: IExcerptToken[], span: Span, state: IBuildSpanState): boolean { if (span.kind === ts.SyntaxKind.JSDocComment) { // Discard any comments @@ -162,6 +183,8 @@ export class ExcerptBuilder { if (canonicalReference) { ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Reference, span.prefix, canonicalReference); + } else if (ExcerptBuilder.isPrimitiveKeyword(span.node)) { + ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Reference, span.prefix); } else { ExcerptBuilder._appendToken(excerptTokens, ExcerptTokenKind.Content, span.prefix); }