Skip to content

Commit 95fe32e

Browse files
committed
Fix missing this parameters
Resolves #1875
1 parent 4350d47 commit 95fe32e

File tree

6 files changed

+32
-3
lines changed

6 files changed

+32
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
### Bug Fixes
99

1010
- Fixed validation for `--requiredToBeDocumented` option, #1872.
11+
- Fixed missing `this` parameters in documentation for some functions, #1875.
1112

1213
## v0.22.12 (2022-02-20)
1314

src/lib/converter/factories/signature.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,15 @@ export function createSignature(
5858
signature.typeParameters
5959
);
6060

61+
const parameterSymbols: ReadonlyArray<ts.Symbol & { type?: ts.Type }> =
62+
signature.thisParameter
63+
? [signature.thisParameter, ...signature.parameters]
64+
: signature.parameters;
65+
6166
sigRef.parameters = convertParameters(
6267
context,
6368
sigRef,
64-
signature.parameters as readonly (ts.Symbol & { type: ts.Type })[],
69+
parameterSymbols,
6570
declaration?.parameters
6671
);
6772

@@ -105,7 +110,7 @@ export function createSignature(
105110
function convertParameters(
106111
context: Context,
107112
sigRef: SignatureReflection,
108-
parameters: readonly (ts.Symbol & { type: ts.Type })[],
113+
parameters: ReadonlyArray<ts.Symbol & { type?: ts.Type }>,
109114
parameterNodes: readonly ts.ParameterDeclaration[] | undefined
110115
) {
111116
return parameters.map((param, i) => {
@@ -129,7 +134,7 @@ function convertParameters(
129134
declaration
130135
);
131136

132-
let type: ts.Type | ts.TypeNode;
137+
let type: ts.Type | ts.TypeNode | undefined;
133138
if (declaration) {
134139
type = context.checker.getTypeOfSymbolAtLocation(
135140
param,

src/lib/types/ts-internal/index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ declare module "typescript" {
2222
): ts.TypePredicate | undefined;
2323
}
2424

25+
export interface Signature {
26+
thisParameter?: ts.Symbol;
27+
}
28+
2529
// https://github.com/microsoft/TypeScript/blob/e213b2af3430bdc9cf5fbc76a8634d832e7aaaaa/src/compiler/types.ts#L5298-L5299
2630
export interface UnionType {
2731
/* @internal */

src/test/converter2/issues/gh1875.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export declare function test(this: typeof globalThis, param: string): string;
2+
3+
export declare function test2(this, param: string): string;

src/test/converter2/tsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"outDir": "dist",
77
"target": "ESNext",
88

9+
"noImplicitAny": false,
10+
911
// See #1524. We might force this to false eventually.
1012
"skipLibCheck": true
1113
},

src/test/issueTests.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,20 @@ export const issueTests: {
292292
ok(project.children![1].kind !== ReflectionKind.Reference);
293293
},
294294

295+
gh1875(project) {
296+
const test = query(project, "test");
297+
equal(
298+
test.signatures?.[0].parameters?.map((p) => p.type?.toString()),
299+
["typeof globalThis", "string"]
300+
);
301+
302+
const test2 = query(project, "test2");
303+
equal(
304+
test2.signatures?.[0].parameters?.map((p) => p.type?.toString()),
305+
["any", "string"]
306+
);
307+
},
308+
295309
gh1876(project) {
296310
const foo = query(project, "foo");
297311
const fooSig = foo.signatures?.[0].parameters?.[0];

0 commit comments

Comments
 (0)