Skip to content

Commit 5170645

Browse files
authored
fix(60592): JSDoc implements space sensetive (#60640)
1 parent f99803d commit 5170645

11 files changed

+196
-0
lines changed

src/compiler/parser.ts

+1
Original file line numberDiff line numberDiff line change
@@ -9536,6 +9536,7 @@ namespace Parser {
95369536
const node = factory.createExpressionWithTypeArguments(expression, typeArguments) as ExpressionWithTypeArguments & { expression: Identifier | PropertyAccessEntityNameExpression; };
95379537
const res = finishNode(node, pos);
95389538
if (usedBrace) {
9539+
skipWhitespace();
95399540
parseExpected(SyntaxKind.CloseBraceToken);
95409541
}
95419542
return res;

tests/baselines/reference/extendsTag3.js

+19
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ class B extends A {
1717
super();
1818
}
1919
}
20+
21+
/**
22+
* @extends { A }
23+
* @constructor
24+
*/
25+
class C extends A {
26+
constructor() {
27+
super();
28+
}
29+
}
2030

2131

2232
//// [foo.js]
@@ -35,3 +45,12 @@ class B extends A {
3545
super();
3646
}
3747
}
48+
/**
49+
* @extends { A }
50+
* @constructor
51+
*/
52+
class C extends A {
53+
constructor() {
54+
super();
55+
}
56+
}

tests/baselines/reference/extendsTag3.symbols

+14
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,17 @@ class B extends A {
2424
}
2525
}
2626

27+
/**
28+
* @extends { A }
29+
* @constructor
30+
*/
31+
class C extends A {
32+
>C : Symbol(C, Decl(foo.js, 15, 1))
33+
>A : Symbol(A, Decl(foo.js, 0, 0))
34+
35+
constructor() {
36+
super();
37+
>super : Symbol(A, Decl(foo.js, 0, 0))
38+
}
39+
}
40+

tests/baselines/reference/extendsTag3.types

+19
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,22 @@ class B extends A {
3030
}
3131
}
3232

33+
/**
34+
* @extends { A }
35+
* @constructor
36+
*/
37+
class C extends A {
38+
>C : C
39+
> : ^
40+
>A : A
41+
> : ^
42+
43+
constructor() {
44+
super();
45+
>super() : void
46+
> : ^^^^
47+
>super : typeof A
48+
> : ^^^^^^^^
49+
}
50+
}
51+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//// [tests/cases/conformance/jsdoc/extendsTag6.ts] ////
2+
3+
=== foo.js ===
4+
/**
5+
* @constructor
6+
*/
7+
class A {
8+
>A : Symbol(A, Decl(foo.js, 0, 0))
9+
10+
constructor() {}
11+
}
12+
13+
/**
14+
* @extends { A }
15+
* @constructor
16+
*/
17+
class B extends A {
18+
>B : Symbol(B, Decl(foo.js, 5, 1))
19+
>A : Symbol(A, Decl(foo.js, 0, 0))
20+
21+
constructor() {
22+
super();
23+
>super : Symbol(A, Decl(foo.js, 0, 0))
24+
}
25+
}
26+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//// [tests/cases/conformance/jsdoc/extendsTag6.ts] ////
2+
3+
=== foo.js ===
4+
/**
5+
* @constructor
6+
*/
7+
class A {
8+
>A : A
9+
> : ^
10+
11+
constructor() {}
12+
}
13+
14+
/**
15+
* @extends { A }
16+
* @constructor
17+
*/
18+
class B extends A {
19+
>B : B
20+
> : ^
21+
>A : A
22+
> : ^
23+
24+
constructor() {
25+
super();
26+
>super() : void
27+
> : ^^^^
28+
>super : typeof A
29+
> : ^^^^^^^^
30+
}
31+
}
32+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//// [tests/cases/conformance/jsdoc/jsdocImplementsTag.ts] ////
2+
3+
=== /a.js ===
4+
/**
5+
* @typedef { { foo: string } } A
6+
*/
7+
8+
/**
9+
* @implements { A }
10+
*/
11+
class B {
12+
>B : Symbol(B, Decl(a.js, 0, 0))
13+
14+
foo = ''
15+
>foo : Symbol(B.foo, Decl(a.js, 7, 9))
16+
}
17+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//// [tests/cases/conformance/jsdoc/jsdocImplementsTag.ts] ////
2+
3+
=== /a.js ===
4+
/**
5+
* @typedef { { foo: string } } A
6+
*/
7+
8+
/**
9+
* @implements { A }
10+
*/
11+
class B {
12+
>B : B
13+
> : ^
14+
15+
foo = ''
16+
>foo : string
17+
> : ^^^^^^
18+
>'' : ""
19+
> : ^^
20+
}
21+

tests/cases/conformance/jsdoc/extendsTag3.ts

+10
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,13 @@ class B extends A {
2020
super();
2121
}
2222
}
23+
24+
/**
25+
* @extends { A }
26+
* @constructor
27+
*/
28+
class C extends A {
29+
constructor() {
30+
super();
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// @allowJs: true
2+
// @checkJs: true
3+
// @target: esnext
4+
// @noEmit: true
5+
// @Filename: foo.js
6+
7+
/**
8+
* @constructor
9+
*/
10+
class A {
11+
constructor() {}
12+
}
13+
14+
/**
15+
* @extends { A }
16+
* @constructor
17+
*/
18+
class B extends A {
19+
constructor() {
20+
super();
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// @allowJs: true
2+
// @checkJs: true
3+
// @noEmit: true
4+
5+
// @Filename: /a.js
6+
/**
7+
* @typedef { { foo: string } } A
8+
*/
9+
10+
/**
11+
* @implements { A }
12+
*/
13+
class B {
14+
foo = ''
15+
}

0 commit comments

Comments
 (0)