Add regression tests
This commit is contained in:
parent
e95ed29ca9
commit
627f1ad876
1 changed files with 53 additions and 0 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
// @target: es2015
|
||||||
|
|
||||||
// Empty object type literals are removed from intersections types
|
// Empty object type literals are removed from intersections types
|
||||||
// that contain other object types
|
// that contain other object types
|
||||||
|
|
||||||
|
@ -23,3 +25,54 @@ let x11: C & D;
|
||||||
let x12: A & B & C & D;
|
let x12: A & B & C & D;
|
||||||
let x13: D & E;
|
let x13: D & E;
|
||||||
let x14: A & B & C & D & E;
|
let x14: A & B & C & D & E;
|
||||||
|
|
||||||
|
// Repro from #20225
|
||||||
|
|
||||||
|
type Dictionary = { [name: string]: string };
|
||||||
|
|
||||||
|
const intersectDictionaries = <F1 extends Dictionary, F2 extends Dictionary>(
|
||||||
|
d1: F1,
|
||||||
|
d2: F2,
|
||||||
|
): F1 & F2 => Object.assign({}, d1, d2);
|
||||||
|
|
||||||
|
const testDictionary = <T extends Dictionary>(_value: T) => { };
|
||||||
|
|
||||||
|
const d1 = {};
|
||||||
|
testDictionary(d1);
|
||||||
|
const d2 = intersectDictionaries(d1, d1);
|
||||||
|
testDictionary(d2);
|
||||||
|
|
||||||
|
const d3 = {
|
||||||
|
s: '',
|
||||||
|
};
|
||||||
|
testDictionary(d3);
|
||||||
|
const d4 = intersectDictionaries(d1, d3);
|
||||||
|
testDictionary(d4);
|
||||||
|
const d5 = intersectDictionaries(d3, d1);
|
||||||
|
testDictionary(d5);
|
||||||
|
const d6 = intersectDictionaries(d3, d3);
|
||||||
|
testDictionary(d6);
|
||||||
|
|
||||||
|
// Repro from #27044
|
||||||
|
|
||||||
|
type choices<IChoiceList extends {
|
||||||
|
[key: string]: boolean;
|
||||||
|
}> = IChoiceList & {
|
||||||
|
shoes:boolean;
|
||||||
|
food:boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
type IMyChoiceList = {
|
||||||
|
car: true
|
||||||
|
};
|
||||||
|
|
||||||
|
type IUnknownChoiceList = {};
|
||||||
|
|
||||||
|
var defaultChoices: choices<{}>;
|
||||||
|
var defaultChoicesAndEmpty: choices<{} & {}>;
|
||||||
|
|
||||||
|
var myChoices: choices<IMyChoiceList>;
|
||||||
|
var myChoicesAndEmpty: choices<IMyChoiceList & {}>;
|
||||||
|
|
||||||
|
var unknownChoices: choices<IUnknownChoiceList>;
|
||||||
|
var unknownChoicesAndEmpty: choices<IUnknownChoiceList & {}>;
|
||||||
|
|
Loading…
Reference in a new issue