=== tests/cases/conformance/expressions/binaryOperators/logicalOrOperator/logicalOrOperatorWithTypeParameters.ts === function fn1(t: T, u: U) { >fn1 : (t: T, u: U) => void >T : T >U : U >t : T >T : T >u : U >U : U var r1 = t || t; >r1 : T >t || t : T >t : T >t : T var r2: T = t || t; >r2 : T >T : T >t || t : T >t : T >t : T var r3 = t || u; >r3 : T | U >t || u : T | U >t : T >u : U var r4: {} = t || u; >r4 : {} >t || u : T | U >t : T >u : U } function fn2(t: T, u: U, v: V) { >fn2 : (t: T, u: U, v: V) => void >T : T >U : U >V : V >t : T >T : T >u : U >U : U >v : V >V : V var r1 = t || u; >r1 : T | U >t || u : T | U >t : T >u : U //var r2: T = t || u; var r3 = u || u; >r3 : U >u || u : U >u : U >u : U var r4: U = u || u; >r4 : U >U : U >u || u : U >u : U >u : U var r5 = u || v; >r5 : U | V >u || v : U | V >u : U >v : V var r6: {} = u || v; >r6 : {} >u || v : U | V >u : U >v : V //var r7: T = u || v; } function fn3(t: T, u: U) { >fn3 : (t: T, u: U) => void >T : T >a : string >b : string >U : U >a : string >b : number >t : T >T : T >u : U >U : U var r1 = t || u; >r1 : T | U >t || u : T | U >t : T >u : U var r2: {} = t || u; >r2 : {} >t || u : T | U >t : T >u : U var r3 = t || { a: '' }; >r3 : { a: string; } >t || { a: '' } : { a: string; } >t : T >{ a: '' } : { a: string; } >a : string >'' : string var r4: { a: string } = t || u; >r4 : { a: string; } >a : string >t || u : T | U >t : T >u : U }