Skip to content

Commit b750255

Browse files
authored
fix: add spaces between different return types of functions (#531)
1 parent 902999d commit b750255

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import assert from 'node:assert/strict';
2+
import { describe, it } from 'node:test';
3+
4+
import { generateSignature } from '../buildSignature.mjs';
5+
6+
describe('generateSignature', () => {
7+
it('formats union return types without spaces as spaced ("|" surrounded)', () => {
8+
const sig = generateSignature(
9+
'foo',
10+
{
11+
params: [],
12+
return: { type: 'string|number' },
13+
},
14+
''
15+
);
16+
17+
assert.equal(sig, 'foo(): string | number');
18+
});
19+
20+
it('preserves already spaced union return types', () => {
21+
const sig = generateSignature(
22+
'bar',
23+
{
24+
params: [],
25+
return: { type: 'Promise<string> | undefined' },
26+
},
27+
''
28+
);
29+
30+
assert.equal(sig, 'bar(): Promise<string> | undefined');
31+
});
32+
33+
it('omits return type when undefined', () => {
34+
const sig = generateSignature(
35+
'baz',
36+
{
37+
params: [],
38+
return: undefined,
39+
},
40+
''
41+
);
42+
43+
assert.equal(sig, 'baz()');
44+
});
45+
});

src/generators/jsx-ast/utils/buildSignature.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ export const generateSignature = (
2323
}
2424

2525
// Function or method
26-
const returnStr = returnType ? `: ${returnType.type}` : '';
26+
const returnStr = (returnType ? `: ${returnType.type}` : '')
27+
.split('|')
28+
.map(part => part.trim())
29+
.filter(Boolean)
30+
.join(' | ');
2731

2832
const paramsStr = params
2933
.map(param => {

0 commit comments

Comments
 (0)