mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-11 20:37:46 -05:00
fix dts generation of jsdoc (#49904)
This commit is contained in:
@@ -4913,6 +4913,13 @@ namespace ts {
|
||||
}
|
||||
|
||||
function typeToTypeNodeHelper(type: Type, context: NodeBuilderContext): TypeNode {
|
||||
const savedFlags = context.flags;
|
||||
const typeNode = typeToTypeNodeWorker(type, context);
|
||||
context.flags = savedFlags;
|
||||
return typeNode;
|
||||
}
|
||||
|
||||
function typeToTypeNodeWorker(type: Type, context: NodeBuilderContext): TypeNode {
|
||||
if (cancellationToken && cancellationToken.throwIfCancellationRequested) {
|
||||
cancellationToken.throwIfCancellationRequested();
|
||||
}
|
||||
|
||||
48
tests/baselines/reference/jsDeclarationsTypedefFunction.js
Normal file
48
tests/baselines/reference/jsDeclarationsTypedefFunction.js
Normal file
@@ -0,0 +1,48 @@
|
||||
//// [foo.js]
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
|
||||
let id = 0
|
||||
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
const send = handlers => new Promise((resolve, reject) => {
|
||||
handlers[++id] = [resolve, reject]
|
||||
})
|
||||
|
||||
//// [foo.js]
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
let id = 0;
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
const send = handlers => new Promise((resolve, reject) => {
|
||||
handlers[++id] = [resolve, reject];
|
||||
});
|
||||
|
||||
|
||||
//// [foo.d.ts]
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
declare let id: number;
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
declare function send(handlers: ResolveRejectMap): Promise<any>;
|
||||
type ResolveRejectMap = {
|
||||
[id: string]: [Function, Function];
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
=== tests/cases/conformance/jsdoc/declarations/foo.js ===
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
|
||||
let id = 0
|
||||
>id : Symbol(id, Decl(foo.js, 6, 3))
|
||||
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
const send = handlers => new Promise((resolve, reject) => {
|
||||
>send : Symbol(send, Decl(foo.js, 12, 5))
|
||||
>handlers : Symbol(handlers, Decl(foo.js, 12, 12))
|
||||
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --))
|
||||
>resolve : Symbol(resolve, Decl(foo.js, 12, 38))
|
||||
>reject : Symbol(reject, Decl(foo.js, 12, 46))
|
||||
|
||||
handlers[++id] = [resolve, reject]
|
||||
>handlers : Symbol(handlers, Decl(foo.js, 12, 12))
|
||||
>id : Symbol(id, Decl(foo.js, 6, 3))
|
||||
>resolve : Symbol(resolve, Decl(foo.js, 12, 38))
|
||||
>reject : Symbol(reject, Decl(foo.js, 12, 46))
|
||||
|
||||
})
|
||||
@@ -0,0 +1,36 @@
|
||||
=== tests/cases/conformance/jsdoc/declarations/foo.js ===
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
|
||||
let id = 0
|
||||
>id : number
|
||||
>0 : 0
|
||||
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
const send = handlers => new Promise((resolve, reject) => {
|
||||
>send : (handlers: ResolveRejectMap) => Promise<any>
|
||||
>handlers => new Promise((resolve, reject) => { handlers[++id] = [resolve, reject]}) : (handlers: ResolveRejectMap) => Promise<any>
|
||||
>handlers : ResolveRejectMap
|
||||
>new Promise((resolve, reject) => { handlers[++id] = [resolve, reject]}) : Promise<any>
|
||||
>Promise : PromiseConstructor
|
||||
>(resolve, reject) => { handlers[++id] = [resolve, reject]} : (resolve: (value: any) => void, reject: (reason?: any) => void) => void
|
||||
>resolve : (value: any) => void
|
||||
>reject : (reason?: any) => void
|
||||
|
||||
handlers[++id] = [resolve, reject]
|
||||
>handlers[++id] = [resolve, reject] : [(value: any) => void, (reason?: any) => void]
|
||||
>handlers[++id] : [Function, Function]
|
||||
>handlers : ResolveRejectMap
|
||||
>++id : number
|
||||
>id : number
|
||||
>[resolve, reject] : [(value: any) => void, (reason?: any) => void]
|
||||
>resolve : (value: any) => void
|
||||
>reject : (reason?: any) => void
|
||||
|
||||
})
|
||||
@@ -0,0 +1,21 @@
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @target: esnext
|
||||
// @outDir: ./out
|
||||
// @declaration: true
|
||||
// @filename: foo.js
|
||||
/**
|
||||
* @typedef {{
|
||||
* [id: string]: [Function, Function];
|
||||
* }} ResolveRejectMap
|
||||
*/
|
||||
|
||||
let id = 0
|
||||
|
||||
/**
|
||||
* @param {ResolveRejectMap} handlers
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
const send = handlers => new Promise((resolve, reject) => {
|
||||
handlers[++id] = [resolve, reject]
|
||||
})
|
||||
Reference in New Issue
Block a user