///
//@Filename: file.tsx
// @jsx: preserve
// @noLib: true
//// declare function OverloadComponent(attr: {b: U, a?: string, "ignore-prop": boolean}): JSX.Element;
//// declare function OverloadComponent(attr: {b: U, a: T}): JSX.Element;
//// declare function OverloadComponent(): JSX.Element; // effective argument type of `{}`, needs to be last
//// function Baz(arg1: T, arg2: U) {
//// let a0 = ;
//// let a1 = ;
//// let a2 = ;
//// let a3 = ;
//// let a4 = ;
//// let a5 = ;
//// let a6 = ;
//// }
verify.quickInfos({
1: "function OverloadComponent(attr: {\n b: number;\n a?: string;\n \"ignore-prop\": boolean;\n}): any (+2 overloads)",
2: "function OverloadComponent(attr: {\n b: string;\n a: boolean;\n}): any (+2 overloads)",
3: "function OverloadComponent(attr: {\n b: string;\n a: boolean;\n}): any (+2 overloads)",
4: "function OverloadComponent(): any (+2 overloads)", // Subtype pass chooses this overload, since `a` is missing from the top overload, and `ignore-prop` is missing from the second (while T & {ignore-prop: true} is a proper subtype of `{}`)
5: "function OverloadComponent(): any (+2 overloads)",
6: "function OverloadComponent(attr: {\n b: never;\n a: boolean;\n}): any (+2 overloads)",
7: "function OverloadComponent(attr: {\n b: never;\n a: boolean;\n}): any (+2 overloads)",
});