Skip to content

Commit 71505e4

Browse files
authored
Render documentation and relationships in the snapshot tests (#97)
* Add support to render relationships and docstrings in snapshots * Fix a bug where we emitted empty documentation strings
1 parent 17f9342 commit 71505e4

23 files changed

+233
-63
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export function a(): string {
22
// ^ definition @example/a 1.0.0 src/`index.ts`/a().
3+
// documentation ```ts\n() => string\n```
34
return ''
45
}
56

snapshots/output/multi-project/packages/b/src/b.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
export function b() {
55
// ^ definition @example/b 1.0.0 src/`b.ts`/b().
6+
// documentation ```ts\n() => string\n```
67
return a()
78
// ^ reference @example/a 1.0.0 src/`index.ts`/a().
89
}

snapshots/output/pure-js/src/main.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
function fib(n) {
22
// ^^^ definition pure-js 1.0.0 src/`main.js`/fib().
3+
// documentation ```ts\n(n: any) => any\n```
34
// ^ definition pure-js 1.0.0 src/`main.js`/fib().(n)
5+
// documentation ```ts\nany\n```
46
if (n <= 1) {
57
// ^ reference pure-js 1.0.0 src/`main.js`/fib().(n)
68
return 0
@@ -14,7 +16,9 @@
1416

1517
function print_fib(a) {
1618
// ^^^^^^^^^ definition pure-js 1.0.0 src/`main.js`/print_fib().
19+
// documentation ```ts\n(a: any) => void\n```
1720
// ^ definition pure-js 1.0.0 src/`main.js`/print_fib().(a)
21+
// documentation ```ts\nany\n```
1822
console.log(fib(a))
1923
// ^^^^^^^ reference typescript 4.6.2 lib/`lib.dom.d.ts`/console.
2024
// ^^^^^^^ reference @types/node 17.0.14 `globals.d.ts`/console.
@@ -28,53 +32,64 @@
2832

2933
var y = 'Hello'
3034
// ^ definition pure-js 1.0.0 src/`main.js`/y.
35+
// documentation ```ts\nstring\n```
3136
function capture() {
3237
// ^^^^^^^ definition pure-js 1.0.0 src/`main.js`/capture().
38+
// documentation ```ts\n() => string\n```
3339
return y
3440
// ^ reference pure-js 1.0.0 src/`main.js`/y.
3541
}
3642
const capture_lambda = () => {
3743
// ^^^^^^^^^^^^^^ definition pure-js 1.0.0 src/`main.js`/capture_lambda.
44+
// documentation ```ts\n() => string\n```
3845
return y
3946
// ^ reference pure-js 1.0.0 src/`main.js`/y.
4047
}
4148

4249
for (var i = 0; i <= 10; i++) {}
4350
// ^ definition local 2
51+
// documentation ```ts\nnumber\n```
4452
// ^ reference local 2
4553
// ^ reference local 2
4654

4755
for (const x of [1, 2, 3]) {
4856
// ^ definition local 5
57+
// documentation ```ts\nnumber\n```
4958
}
5059

5160
var a = 0
5261
// ^ definition pure-js 1.0.0 src/`main.js`/a.
62+
// documentation ```ts\nnumber\n```
5363
var a = 1
5464
// ^ definition pure-js 1.0.0 src/`main.js`/a.
65+
// documentation ```ts\nnumber\n```
5566
print_fib(a)
5667
//^^^^^^^^^ reference pure-js 1.0.0 src/`main.js`/print_fib().
5768
// ^ reference pure-js 1.0.0 src/`main.js`/a.
5869
// ^ reference pure-js 1.0.0 src/`main.js`/a.
5970

6071
function forever() {
6172
// ^^^^^^^ definition pure-js 1.0.0 src/`main.js`/forever().
73+
// documentation ```ts\n() => any\n```
6274
return forever()
6375
// ^^^^^^^ reference pure-js 1.0.0 src/`main.js`/forever().
6476
}
6577

6678
function use_before_def() {
6779
// ^^^^^^^^^^^^^^ definition pure-js 1.0.0 src/`main.js`/use_before_def().
80+
// documentation ```ts\n() => void\n```
6881
print_fib(n)
6982
// ^^^^^^^^^ reference pure-js 1.0.0 src/`main.js`/print_fib().
7083
// ^ reference local 8
7184
var n = 10
7285
// ^ definition local 8
86+
// documentation ```ts\nnumber\n```
7387

7488
if (forever()) {
7589
// ^^^^^^^ reference pure-js 1.0.0 src/`main.js`/forever().
7690
var m = 10
7791
// ^ definition local 11
92+
// documentation ```ts\nnumber\n```
7893
}
7994
print_fib(m)
8095
// ^^^^^^^^^ reference pure-js 1.0.0 src/`main.js`/print_fib().
@@ -83,12 +98,15 @@
8398

8499
function var_function_scope() {
85100
// ^^^^^^^^^^^^^^^^^^ definition pure-js 1.0.0 src/`main.js`/var_function_scope().
101+
// documentation ```ts\n() => void\n```
86102
var k = 0
87103
// ^ definition local 14
104+
// documentation ```ts\nnumber\n```
88105
if (forever()) {
89106
// ^^^^^^^ reference pure-js 1.0.0 src/`main.js`/forever().
90107
var k = 1
91108
// ^ definition local 14
109+
// documentation ```ts\nnumber\n```
92110
}
93111
print_fib(k)
94112
// ^^^^^^^^^ reference pure-js 1.0.0 src/`main.js`/print_fib().

snapshots/output/react/src/LoaderInput.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@
44
/** Takes loading prop, input component as child */
55
interface Props {
66
// ^^^^^ definition react-example 1.0.0 src/`LoaderInput.tsx`/Props#
7+
// documentation ```ts\nProps\n```
8+
// documentation Takes loading prop, input component as child
79
loading: boolean
810
// ^^^^^^^ definition react-example 1.0.0 src/`LoaderInput.tsx`/Props#loading.
11+
// documentation ```ts\nboolean\n```
912
children: React.ReactNode
1013
// ^^^^^^^^ definition react-example 1.0.0 src/`LoaderInput.tsx`/Props#children.
14+
// documentation ```ts\nReactNode\n```
1115
// ^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/
1216
// ^^^^^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/ReactNode#
1317
}
1418

1519
export const LoaderInput: React.FunctionComponent<Props> = ({
1620
// ^^^^^^^^^^^ definition react-example 1.0.0 src/`LoaderInput.tsx`/LoaderInput.
21+
// documentation ```ts\nFunctionComponent<Props>\n```
1722
// ^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/
1823
// ^^^^^^^^^^^^^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/FunctionComponent#
1924
// ^^^^^ reference react-example 1.0.0 src/`LoaderInput.tsx`/Props#
@@ -37,10 +42,12 @@
3742

3843
export const LoaderInput2: React.FunctionComponent<Props> = props => {
3944
// ^^^^^^^^^^^^ definition react-example 1.0.0 src/`LoaderInput.tsx`/LoaderInput2.
45+
// documentation ```ts\nFunctionComponent<Props>\n```
4046
// ^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/
4147
// ^^^^^^^^^^^^^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/FunctionComponent#
4248
// ^^^^^ reference react-example 1.0.0 src/`LoaderInput.tsx`/Props#
4349
// ^^^^^ definition local 6
50+
// documentation ```ts\nPropsWithChildren<Props>\n```
4451
return <LoaderInput loading={true} key="key" children={props.children} />
4552
// ^^^^^^^^^^^ reference react-example 1.0.0 src/`LoaderInput.tsx`/LoaderInput.
4653
// ^^^^^^^ reference react-example 1.0.0 src/`LoaderInput.tsx`/Props#loading.

snapshots/output/react/src/MyTSXElement.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33

44
export interface MyProps {}
55
// ^^^^^^^ definition react-example 1.0.0 src/`MyTSXElement.tsx`/MyProps#
6+
// documentation ```ts\nMyProps\n```
67

78
export const MyTSXElement: React.FunctionComponent<MyProps> = ({}) => (<p></p>)
89
// ^^^^^^^^^^^^ definition react-example 1.0.0 src/`MyTSXElement.tsx`/MyTSXElement.
10+
// documentation ```ts\nFunctionComponent<MyProps>\n```
911
// ^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/
1012
// ^^^^^^^^^^^^^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/FunctionComponent#
1113
// ^^^^^^^ reference react-example 1.0.0 src/`MyTSXElement.tsx`/MyProps#

snapshots/output/react/src/UseMyTSXElement.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
export const _: React.FunctionComponent<MyProps> =
99
// ^ definition react-example 1.0.0 src/`UseMyTSXElement.tsx`/_.
10+
// documentation ```ts\nFunctionComponent<MyProps>\n```
1011
// ^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/
1112
// ^^^^^^^^^^^^^^^^^ reference @types/react 17.0.0 `index.d.ts`/React/FunctionComponent#
1213
// ^^^^^^^ reference react-example 1.0.0 src/`MyTSXElement.tsx`/MyProps#

snapshots/output/syntax/src/accessors.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,81 @@
11
class C {
22
// ^ definition syntax 1.0.0 src/`accessors.ts`/C#
3+
// documentation ```ts\nC\n```
34
_length: number = 0
45
// ^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#_length.
6+
// documentation ```ts\nnumber\n```
57
get length(): number {
68
// ^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#`<get>length`().
9+
// documentation ```ts\nnumber\n```
710
return this._length
811
// ^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/C#_length.
912
}
1013
set length(value: number) {
1114
// ^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#`<get>length`().
15+
// documentation ```ts\nnumber\n```
1216
// ^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#`<set>length`().(value)
17+
// documentation ```ts\nnumber\n```
1318
this._length = value
1419
// ^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/C#_length.
1520
// ^^^^^ reference syntax 1.0.0 src/`accessors.ts`/C#`<set>length`().(value)
1621
}
1722

1823
_capacity: number = 0
1924
// ^^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#_capacity.
25+
// documentation ```ts\nnumber\n```
2026
get capacity(): number {
2127
// ^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/C#`<get>capacity`().
28+
// documentation ```ts\nnumber\n```
2229
return this._capacity
2330
// ^^^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/C#_capacity.
2431
}
2532
}
2633

2734
export class D {
2835
// ^ definition syntax 1.0.0 src/`accessors.ts`/D#
36+
// documentation ```ts\nD\n```
2937
_length: number = 0
3038
// ^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#_length.
39+
// documentation ```ts\nnumber\n```
3140
public get length(): number {
3241
// ^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<get>length`().
42+
// documentation ```ts\nnumber\n```
3343
return this._length
3444
// ^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#_length.
3545
}
3646
public set length(value: number) {
3747
// ^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<get>length`().
48+
// documentation ```ts\nnumber\n```
3849
// ^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<set>length`().(value)
50+
// documentation ```ts\nnumber\n```
3951
this._length = value
4052
// ^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#_length.
4153
// ^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#`<set>length`().(value)
4254
}
4355

4456
_capacity: number = 0
4557
// ^^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#_capacity.
58+
// documentation ```ts\nnumber\n```
4659
public get capacity(): number {
4760
// ^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<get>capacity`().
61+
// documentation ```ts\nnumber\n```
4862
return this._capacity
4963
// ^^^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#_capacity.
5064
}
5165
private set capacity(value: number) {
5266
// ^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<get>capacity`().
67+
// documentation ```ts\nnumber\n```
5368
// ^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#`<set>capacity`().(value)
69+
// documentation ```ts\nnumber\n```
5470
this._capacity = value
5571
// ^^^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#_capacity.
5672
// ^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#`<set>capacity`().(value)
5773
}
5874
public unsafeSetCapacity(value: number): void {
5975
// ^^^^^^^^^^^^^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#unsafeSetCapacity().
76+
// documentation ```ts\n(value: number) => void\n```
6077
// ^^^^^ definition syntax 1.0.0 src/`accessors.ts`/D#unsafeSetCapacity().(value)
78+
// documentation ```ts\nnumber\n```
6179
this.capacity = value
6280
// ^^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#`<get>capacity`().
6381
// ^^^^^^^^ reference syntax 1.0.0 src/`accessors.ts`/D#`<set>capacity`().
@@ -67,12 +85,16 @@
6785

6886
function g(_: number): void {}
6987
// ^ definition syntax 1.0.0 src/`accessors.ts`/g().
88+
// documentation ```ts\n(_: number) => void\n```
7089
// ^ definition syntax 1.0.0 src/`accessors.ts`/g().(_)
90+
// documentation ```ts\nnumber\n```
7191

7292
function f() {
7393
// ^ definition syntax 1.0.0 src/`accessors.ts`/f().
94+
// documentation ```ts\n() => void\n```
7495
const c = new C()
7596
// ^ definition local 2
97+
// documentation ```ts\nC\n```
7698
// ^ reference syntax 1.0.0 src/`accessors.ts`/C#
7799
c.length = 10
78100
// ^ reference local 2
@@ -95,6 +117,7 @@
95117

96118
const d = new D()
97119
// ^ definition local 5
120+
// documentation ```ts\nD\n```
98121
// ^ reference syntax 1.0.0 src/`accessors.ts`/D#
99122
d.length = 0
100123
// ^ reference local 5

snapshots/output/syntax/src/class.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,57 @@
11
export class Class {
22
// ^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#
3+
// documentation ```ts\nClass\n```
34
public classProperty: string
45
// ^^^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#classProperty.
6+
// documentation ```ts\nstring\n```
57
constructor(constructorParam: string) {
68
// ^^^^^^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#`<constructor>`().(constructorParam)
9+
// documentation ```ts\nstring\n```
710
this.classProperty = constructorParam
811
// ^^^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#classProperty.
912
// ^^^^^^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#`<constructor>`().(constructorParam)
1013
}
1114
public method(methodParam: string): string {
1215
// ^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#method().
16+
// documentation ```ts\n(methodParam: string) => string\n```
1317
// ^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#method().(methodParam)
18+
// documentation ```ts\nstring\n```
1419
return this.privateMethod(methodParam)
1520
// ^^^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#privateMethod().
1621
// ^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#method().(methodParam)
1722
}
1823
public static staticMethod(methodParam: string): string {
1924
// ^^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#staticMethod().
25+
// documentation ```ts\n(methodParam: string) => string\n```
2026
// ^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#staticMethod().(methodParam)
27+
// documentation ```ts\nstring\n```
2128
return methodParam
2229
// ^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#staticMethod().(methodParam)
2330
}
2431
private privateMethod(methodParam: string): string {
2532
// ^^^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#privateMethod().
33+
// documentation ```ts\n(methodParam: string) => string\n```
2634
// ^^^^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/Class#privateMethod().(methodParam)
35+
// documentation ```ts\nstring\n```
2736
return methodParam
2837
// ^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#privateMethod().(methodParam)
2938
}
3039
}
3140

3241
export function newClass(param: string): string {
3342
// ^^^^^^^^ definition syntax 1.0.0 src/`class.ts`/newClass().
43+
// documentation ```ts\n(param: string) => string\n```
3444
// ^^^^^ definition syntax 1.0.0 src/`class.ts`/newClass().(param)
45+
// documentation ```ts\nstring\n```
3546
const instance = new Class(param).classProperty
3647
// ^^^^^^^^ definition local 2
48+
// documentation ```ts\nstring\n```
3749
// ^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#
3850
// ^^^^^ reference syntax 1.0.0 src/`class.ts`/newClass().(param)
3951
// ^^^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#classProperty.
4052
const instance2 = Class.staticMethod(param)
4153
// ^^^^^^^^^ definition local 5
54+
// documentation ```ts\nstring\n```
4255
// ^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#
4356
// ^^^^^^^^^^^^ reference syntax 1.0.0 src/`class.ts`/Class#staticMethod().
4457
// ^^^^^ reference syntax 1.0.0 src/`class.ts`/newClass().(param)

snapshots/output/syntax/src/enum.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
export enum Enum {
22
// ^^^^ definition syntax 1.0.0 src/`enum.ts`/Enum#
3+
// documentation ```ts\nEnum\n```
34
A,
45
// ^ definition syntax 1.0.0 src/`enum.ts`/Enum#A.
6+
// documentation ```ts\nEnum.A\n```
57
B,
68
// ^ definition syntax 1.0.0 src/`enum.ts`/Enum#B.
9+
// documentation ```ts\nEnum.B\n```
710
}
811

912
export function newEnum(): Enum {
1013
// ^^^^^^^ definition syntax 1.0.0 src/`enum.ts`/newEnum().
14+
// documentation ```ts\n() => Enum\n```
1115
// ^^^^ reference syntax 1.0.0 src/`enum.ts`/Enum#
1216
return Enum.A
1317
// ^^^^ reference syntax 1.0.0 src/`enum.ts`/Enum#
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export function newFunction(): void {}
22
// ^^^^^^^^^^^ definition syntax 1.0.0 src/`function.ts`/newFunction().
3+
// documentation ```ts\n() => void\n```
34

0 commit comments

Comments
 (0)