Adding test to demonstrate limits of signature identity checking
This commit is contained in:
parent
3e6d40f3fe
commit
86d4a4c11f
4 changed files with 150 additions and 0 deletions
32
tests/baselines/reference/genericSignatureIdentity.js
Normal file
32
tests/baselines/reference/genericSignatureIdentity.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
//// [genericSignatureIdentity.ts]
|
||||||
|
// This test is here to remind us of our current limits of type identity checking.
|
||||||
|
// Ideally all of the below declarations would be considered different (and thus errors)
|
||||||
|
// but they aren't because we erase type parameters to type any and don't check that
|
||||||
|
// constraints are identical.
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T extends Date>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T extends number>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T>(x: any): any;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//// [genericSignatureIdentity.js]
|
||||||
|
// This test is here to remind us of our current limits of type identity checking.
|
||||||
|
// Ideally all of the below declarations would be considered different (and thus errors)
|
||||||
|
// but they aren't because we erase type parameters to type any and don't check that
|
||||||
|
// constraints are identical.
|
||||||
|
var x;
|
||||||
|
var x;
|
||||||
|
var x;
|
||||||
|
var x;
|
49
tests/baselines/reference/genericSignatureIdentity.symbols
Normal file
49
tests/baselines/reference/genericSignatureIdentity.symbols
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
=== tests/cases/compiler/genericSignatureIdentity.ts ===
|
||||||
|
// This test is here to remind us of our current limits of type identity checking.
|
||||||
|
// Ideally all of the below declarations would be considered different (and thus errors)
|
||||||
|
// but they aren't because we erase type parameters to type any and don't check that
|
||||||
|
// constraints are identical.
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3))
|
||||||
|
|
||||||
|
<T extends Date>(x: T): T;
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5))
|
||||||
|
>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 6, 21))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5))
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3))
|
||||||
|
|
||||||
|
<T extends number>(x: T): T;
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5))
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 10, 23))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5))
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3))
|
||||||
|
|
||||||
|
<T>(x: T): T;
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5))
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 14, 8))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5))
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5))
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3))
|
||||||
|
|
||||||
|
<T>(x: any): any;
|
||||||
|
>T : Symbol(T, Decl(genericSignatureIdentity.ts, 18, 5))
|
||||||
|
>x : Symbol(x, Decl(genericSignatureIdentity.ts, 18, 8))
|
||||||
|
|
||||||
|
};
|
||||||
|
|
49
tests/baselines/reference/genericSignatureIdentity.types
Normal file
49
tests/baselines/reference/genericSignatureIdentity.types
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
=== tests/cases/compiler/genericSignatureIdentity.ts ===
|
||||||
|
// This test is here to remind us of our current limits of type identity checking.
|
||||||
|
// Ideally all of the below declarations would be considered different (and thus errors)
|
||||||
|
// but they aren't because we erase type parameters to type any and don't check that
|
||||||
|
// constraints are identical.
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : <T extends Date>(x: T) => T
|
||||||
|
|
||||||
|
<T extends Date>(x: T): T;
|
||||||
|
>T : T
|
||||||
|
>Date : Date
|
||||||
|
>x : T
|
||||||
|
>T : T
|
||||||
|
>T : T
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : <T extends Date>(x: T) => T
|
||||||
|
|
||||||
|
<T extends number>(x: T): T;
|
||||||
|
>T : T
|
||||||
|
>x : T
|
||||||
|
>T : T
|
||||||
|
>T : T
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : <T extends Date>(x: T) => T
|
||||||
|
|
||||||
|
<T>(x: T): T;
|
||||||
|
>T : T
|
||||||
|
>x : T
|
||||||
|
>T : T
|
||||||
|
>T : T
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
>x : <T extends Date>(x: T) => T
|
||||||
|
|
||||||
|
<T>(x: any): any;
|
||||||
|
>T : T
|
||||||
|
>x : any
|
||||||
|
|
||||||
|
};
|
||||||
|
|
20
tests/cases/compiler/genericSignatureIdentity.ts
Normal file
20
tests/cases/compiler/genericSignatureIdentity.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// This test is here to remind us of our current limits of type identity checking.
|
||||||
|
// Ideally all of the below declarations would be considered different (and thus errors)
|
||||||
|
// but they aren't because we erase type parameters to type any and don't check that
|
||||||
|
// constraints are identical.
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T extends Date>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T extends number>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T>(x: T): T;
|
||||||
|
};
|
||||||
|
|
||||||
|
var x: {
|
||||||
|
<T>(x: any): any;
|
||||||
|
};
|
Loading…
Reference in a new issue