mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 20:14:01 -06:00
Returned generic function is instantiated correctly
This commit is contained in:
parent
1b585dd503
commit
da83eb967a
36
tests/baselines/reference/jsdocTemplateTag.symbols
Normal file
36
tests/baselines/reference/jsdocTemplateTag.symbols
Normal file
@ -0,0 +1,36 @@
|
||||
=== tests/cases/conformance/jsdoc/jsdocTemplateTag.ts ===
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
*/
|
||||
function f<T>(a: T) {
|
||||
>f : Symbol(f, Decl(jsdocTemplateTag.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(jsdocTemplateTag.ts, 4, 11))
|
||||
>a : Symbol(a, Decl(jsdocTemplateTag.ts, 4, 14))
|
||||
>T : Symbol(T, Decl(jsdocTemplateTag.ts, 4, 11))
|
||||
|
||||
return () => a
|
||||
>a : Symbol(a, Decl(jsdocTemplateTag.ts, 4, 14))
|
||||
}
|
||||
let n = f(1)()
|
||||
>n : Symbol(n, Decl(jsdocTemplateTag.ts, 7, 3))
|
||||
>f : Symbol(f, Decl(jsdocTemplateTag.ts, 0, 0))
|
||||
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
* @returns {function(): T}
|
||||
*/
|
||||
function g<T>(a: T) {
|
||||
>g : Symbol(g, Decl(jsdocTemplateTag.ts, 7, 14))
|
||||
>T : Symbol(T, Decl(jsdocTemplateTag.ts, 14, 11))
|
||||
>a : Symbol(a, Decl(jsdocTemplateTag.ts, 14, 14))
|
||||
>T : Symbol(T, Decl(jsdocTemplateTag.ts, 14, 11))
|
||||
|
||||
return () => a
|
||||
>a : Symbol(a, Decl(jsdocTemplateTag.ts, 14, 14))
|
||||
}
|
||||
let s = g('hi')()
|
||||
>s : Symbol(s, Decl(jsdocTemplateTag.ts, 17, 3))
|
||||
>g : Symbol(g, Decl(jsdocTemplateTag.ts, 7, 14))
|
||||
|
||||
44
tests/baselines/reference/jsdocTemplateTag.types
Normal file
44
tests/baselines/reference/jsdocTemplateTag.types
Normal file
@ -0,0 +1,44 @@
|
||||
=== tests/cases/conformance/jsdoc/jsdocTemplateTag.ts ===
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
*/
|
||||
function f<T>(a: T) {
|
||||
>f : <T>(a: T) => () => T
|
||||
>T : T
|
||||
>a : T
|
||||
>T : T
|
||||
|
||||
return () => a
|
||||
>() => a : () => T
|
||||
>a : T
|
||||
}
|
||||
let n = f(1)()
|
||||
>n : number
|
||||
>f(1)() : number
|
||||
>f(1) : () => number
|
||||
>f : <T>(a: T) => () => T
|
||||
>1 : 1
|
||||
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
* @returns {function(): T}
|
||||
*/
|
||||
function g<T>(a: T) {
|
||||
>g : <T>(a: T) => () => T
|
||||
>T : T
|
||||
>a : T
|
||||
>T : T
|
||||
|
||||
return () => a
|
||||
>() => a : () => T
|
||||
>a : T
|
||||
}
|
||||
let s = g('hi')()
|
||||
>s : string
|
||||
>g('hi')() : string
|
||||
>g('hi') : () => string
|
||||
>g : <T>(a: T) => () => T
|
||||
>'hi' : "hi"
|
||||
|
||||
21
tests/cases/conformance/jsdoc/jsdocTemplateTag.ts
Normal file
21
tests/cases/conformance/jsdoc/jsdocTemplateTag.ts
Normal file
@ -0,0 +1,21 @@
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @noEmit: true
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
*/
|
||||
function f<T>(a: T) {
|
||||
return () => a
|
||||
}
|
||||
let n = f(1)()
|
||||
|
||||
/**
|
||||
* @param {T} a
|
||||
* @template T
|
||||
* @returns {function(): T}
|
||||
*/
|
||||
function g<T>(a: T) {
|
||||
return () => a
|
||||
}
|
||||
let s = g('hi')()
|
||||
Loading…
x
Reference in New Issue
Block a user