Skip to content

Commit 6f385fd

Browse files
authored
fix: emit end of file comments (#1491)
Co-authored-by: Cheng Liu <[email protected]>
1 parent e4e03ca commit 6f385fd

30 files changed

+440
-144
lines changed

internal/parser/parser.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ func (p *Parser) parseSourceFileWorker() *ast.SourceFile {
345345
if len(p.reparseList) > 0 {
346346
statements = append(statements, p.reparseList...)
347347
p.reparseList = nil
348-
end = p.nodePos()
349348
}
350349
node := p.factory.NewSourceFile(p.opts, p.sourceText, p.newNodeList(core.NewTextRange(pos, end), statements), eof)
351350
p.finishNode(node, pos)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments.ts] ////
2+
3+
//// [emitEndOfFileJSDocComments.js]
4+
/** @typedef {number} A */
5+
var unrelated;
6+
/** @typedef {number} B */
7+
8+
//// [emitEndOfFileJSDocComments.js]
9+
"use strict";
10+
Object.defineProperty(exports, "__esModule", { value: true });
11+
/** @typedef {number} A */
12+
var unrelated;
13+
/** @typedef {number} B */
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments.ts] ////
2+
3+
=== emitEndOfFileJSDocComments.js ===
4+
/** @typedef {number} A */
5+
var unrelated;
6+
>unrelated : Symbol(unrelated, Decl(emitEndOfFileJSDocComments.js, 1, 3))
7+
8+
/** @typedef {number} B */
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments.ts] ////
2+
3+
=== emitEndOfFileJSDocComments.js ===
4+
/** @typedef {number} A */
5+
var unrelated;
6+
>unrelated : any
7+
8+
/** @typedef {number} B */
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments2.ts] ////
2+
3+
//// [emitEndOfFileJSDocComments2.js]
4+
/** @typedef {number} A */
5+
6+
/**
7+
* JSDoc comment for function
8+
* @param {string} param - A string parameter
9+
* @returns {number} The length of the string
10+
*/
11+
function test(param) {
12+
// Comment inside function
13+
return param.length;
14+
/** @typedef {number} B2 */
15+
}
16+
17+
// Single line comment
18+
/** @typedef {number} C */
19+
/**
20+
* Multiple line comment
21+
*/
22+
23+
24+
//// [emitEndOfFileJSDocComments2.js]
25+
"use strict";
26+
Object.defineProperty(exports, "__esModule", { value: true });
27+
/** @typedef {number} A */
28+
/**
29+
* JSDoc comment for function
30+
* @param {string} param - A string parameter
31+
* @returns {number} The length of the string
32+
*/
33+
function test(param) {
34+
// Comment inside function
35+
return param.length;
36+
/** @typedef {number} B2 */
37+
}
38+
// Single line comment
39+
/** @typedef {number} C */
40+
/**
41+
* Multiple line comment
42+
*/
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments2.ts] ////
2+
3+
=== emitEndOfFileJSDocComments2.js ===
4+
/** @typedef {number} A */
5+
6+
/**
7+
* JSDoc comment for function
8+
* @param {string} param - A string parameter
9+
* @returns {number} The length of the string
10+
*/
11+
function test(param) {
12+
>test : Symbol(test, Decl(emitEndOfFileJSDocComments2.js, 0, 0))
13+
>param : Symbol(param, Decl(emitEndOfFileJSDocComments2.js, 7, 14))
14+
15+
// Comment inside function
16+
return param.length;
17+
>param.length : Symbol(length, Decl(lib.es5.d.ts, --, --))
18+
>param : Symbol(param, Decl(emitEndOfFileJSDocComments2.js, 7, 14))
19+
>length : Symbol(length, Decl(lib.es5.d.ts, --, --))
20+
21+
/** @typedef {number} B2 */
22+
}
23+
24+
// Single line comment
25+
/** @typedef {number} C */
26+
/**
27+
* Multiple line comment
28+
*/
29+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [tests/cases/compiler/emitEndOfFileJSDocComments2.ts] ////
2+
3+
=== emitEndOfFileJSDocComments2.js ===
4+
/** @typedef {number} A */
5+
6+
/**
7+
* JSDoc comment for function
8+
* @param {string} param - A string parameter
9+
* @returns {number} The length of the string
10+
*/
11+
function test(param) {
12+
>test : (param: string) => number
13+
>param : string
14+
15+
// Comment inside function
16+
return param.length;
17+
>param.length : number
18+
>param : string
19+
>length : number
20+
21+
/** @typedef {number} B2 */
22+
}
23+
24+
// Single line comment
25+
/** @typedef {number} C */
26+
/**
27+
* Multiple line comment
28+
*/
29+

testdata/baselines/reference/conformance/jsDeclarationsDefault2.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ const _default = class {
1717
};
1818
exports._default = _default;
1919
exports.default = 12;
20+
/**
21+
* @typedef {string | number} default
22+
*/
2023

2124

2225
//// [index1.d.ts]
@@ -26,6 +29,9 @@ export declare const _default: {
2629
declare const _default_1: number;
2730
export default _default_1;
2831
export type default = string | number;
32+
/**
33+
* @typedef {string | number} default
34+
*/
2935

3036

3137
//// [DtsFileErrors]
@@ -58,4 +64,7 @@ out/index1.d.ts(6,32): error TS2693: 'number' only refers to a type, but is bein
5864
!!! error TS2693: 'string' only refers to a type, but is being used as a value here.
5965
~~~~~~
6066
!!! error TS2693: 'number' only refers to a type, but is being used as a value here.
67+
/**
68+
* @typedef {string | number} default
69+
*/
6170

testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ export const blah = handleParamGovernance({});
3535
//// [types.d.ts]
3636
export {};
3737
export type ParamStateRecord = Record<Keyword, ParamValueTyped>;
38+
/**
39+
* @typedef {Record<Keyword, ParamValueTyped>} ParamStateRecord a Record containing
40+
* keyword pairs with descriptions of parameters under governance.
41+
*/
3842
//// [index.d.ts]
3943
export declare const blah: {
4044
publicMixin: {

testdata/baselines/reference/submodule/compiler/reuseTypeAnnotationImportTypeInGlobalThisTypeArgument.js.diff

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44

55

66
//// [types.d.ts]
7-
-/**
8-
- * a Record containing
9-
- * keyword pairs with descriptions of parameters under governance.
10-
- */
117
+export {};
12-
export type ParamStateRecord = Record<Keyword, ParamValueTyped>;
8+
+export type ParamStateRecord = Record<Keyword, ParamValueTyped>;
9+
/**
10+
- * a Record containing
11+
+ * @typedef {Record<Keyword, ParamValueTyped>} ParamStateRecord a Record containing
12+
* keyword pairs with descriptions of parameters under governance.
13+
*/
14+
-export type ParamStateRecord = Record<Keyword, ParamValueTyped>;
1315
//// [index.d.ts]
1416
-export const blah: {
1517
+export declare const blah: {

0 commit comments

Comments
 (0)