=== tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorConditoinIsAnyType.ts === //Cond ? Expr1 : Expr2, Cond is of any type, Expr1 and Expr2 have the same type var condAny: any; >condAny : any var x: any; >x : any var exprAny1: any; >exprAny1 : any var exprBoolean1: boolean; >exprBoolean1 : boolean var exprNumber1: number; >exprNumber1 : number var exprString1: string; >exprString1 : string var exprIsObject1: Object; >exprIsObject1 : Object >Object : Object var exprAny2: any; >exprAny2 : any var exprBoolean2: boolean; >exprBoolean2 : boolean var exprNumber2: number; >exprNumber2 : number var exprString2: string; >exprString2 : string var exprIsObject2: Object; >exprIsObject2 : Object >Object : Object //Cond is an any type variable condAny ? exprAny1 : exprAny2; >condAny ? exprAny1 : exprAny2 : any >condAny : any >exprAny1 : any >exprAny2 : any condAny ? exprBoolean1 : exprBoolean2; >condAny ? exprBoolean1 : exprBoolean2 : boolean >condAny : any >exprBoolean1 : boolean >exprBoolean2 : boolean condAny ? exprNumber1 : exprNumber2; >condAny ? exprNumber1 : exprNumber2 : number >condAny : any >exprNumber1 : number >exprNumber2 : number condAny ? exprString1 : exprString2; >condAny ? exprString1 : exprString2 : string >condAny : any >exprString1 : string >exprString2 : string condAny ? exprIsObject1 : exprIsObject2; >condAny ? exprIsObject1 : exprIsObject2 : Object >condAny : any >exprIsObject1 : Object >exprIsObject2 : Object condAny ? exprString1 : exprBoolean1; // union >condAny ? exprString1 : exprBoolean1 : string | boolean >condAny : any >exprString1 : string >exprBoolean1 : boolean //Cond is an any type literal null ? exprAny1 : exprAny2; >null ? exprAny1 : exprAny2 : any >exprAny1 : any >exprAny2 : any null ? exprBoolean1 : exprBoolean2; >null ? exprBoolean1 : exprBoolean2 : boolean >exprBoolean1 : boolean >exprBoolean2 : boolean undefined ? exprNumber1 : exprNumber2; >undefined ? exprNumber1 : exprNumber2 : number >undefined : undefined >exprNumber1 : number >exprNumber2 : number [null, undefined] ? exprString1 : exprString2; >[null, undefined] ? exprString1 : exprString2 : string >[null, undefined] : null[] >undefined : undefined >exprString1 : string >exprString2 : string [null, undefined] ? exprIsObject1 : exprIsObject2; >[null, undefined] ? exprIsObject1 : exprIsObject2 : Object >[null, undefined] : null[] >undefined : undefined >exprIsObject1 : Object >exprIsObject2 : Object undefined ? exprString1 : exprBoolean1; // union >undefined ? exprString1 : exprBoolean1 : string | boolean >undefined : undefined >exprString1 : string >exprBoolean1 : boolean //Cond is an any type expression x.doSomeThing() ? exprAny1 : exprAny2; >x.doSomeThing() ? exprAny1 : exprAny2 : any >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprAny1 : any >exprAny2 : any x("x") ? exprBoolean1 : exprBoolean2; >x("x") ? exprBoolean1 : exprBoolean2 : boolean >x("x") : any >x : any >exprBoolean1 : boolean >exprBoolean2 : boolean x(x) ? exprNumber1 : exprNumber2; >x(x) ? exprNumber1 : exprNumber2 : number >x(x) : any >x : any >x : any >exprNumber1 : number >exprNumber2 : number x("x") ? exprString1 : exprString2; >x("x") ? exprString1 : exprString2 : string >x("x") : any >x : any >exprString1 : string >exprString2 : string x.doSomeThing() ? exprIsObject1 : exprIsObject2; >x.doSomeThing() ? exprIsObject1 : exprIsObject2 : Object >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprIsObject1 : Object >exprIsObject2 : Object x.doSomeThing() ? exprString1 : exprBoolean1; // union >x.doSomeThing() ? exprString1 : exprBoolean1 : string | boolean >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprString1 : string >exprBoolean1 : boolean //Results shoud be same as Expr1 and Expr2 var resultIsAny1 = condAny ? exprAny1 : exprAny2; >resultIsAny1 : any >condAny ? exprAny1 : exprAny2 : any >condAny : any >exprAny1 : any >exprAny2 : any var resultIsBoolean1 = condAny ? exprBoolean1 : exprBoolean2; >resultIsBoolean1 : boolean >condAny ? exprBoolean1 : exprBoolean2 : boolean >condAny : any >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber1 = condAny ? exprNumber1 : exprNumber2; >resultIsNumber1 : number >condAny ? exprNumber1 : exprNumber2 : number >condAny : any >exprNumber1 : number >exprNumber2 : number var resultIsString1 = condAny ? exprString1 : exprString2; >resultIsString1 : string >condAny ? exprString1 : exprString2 : string >condAny : any >exprString1 : string >exprString2 : string var resultIsObject1 = condAny ? exprIsObject1 : exprIsObject2; >resultIsObject1 : Object >condAny ? exprIsObject1 : exprIsObject2 : Object >condAny : any >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean1 : string | boolean >condAny ? exprString1 : exprBoolean1 : string | boolean >condAny : any >exprString1 : string >exprBoolean1 : boolean var resultIsAny2 = null ? exprAny1 : exprAny2; >resultIsAny2 : any >null ? exprAny1 : exprAny2 : any >exprAny1 : any >exprAny2 : any var resultIsBoolean2 = null ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean >null ? exprBoolean1 : exprBoolean2 : boolean >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber2 = undefined ? exprNumber1 : exprNumber2; >resultIsNumber2 : number >undefined ? exprNumber1 : exprNumber2 : number >undefined : undefined >exprNumber1 : number >exprNumber2 : number var resultIsString2 = [null, undefined] ? exprString1 : exprString2; >resultIsString2 : string >[null, undefined] ? exprString1 : exprString2 : string >[null, undefined] : null[] >undefined : undefined >exprString1 : string >exprString2 : string var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object >[null, undefined] ? exprIsObject1 : exprIsObject2 : Object >[null, undefined] : null[] >undefined : undefined >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean2 : string | boolean >null ? exprString1 : exprBoolean1 : string | boolean >exprString1 : string >exprBoolean1 : boolean var resultIsStringOrBoolean3 = undefined ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean3 : string | boolean >undefined ? exprString1 : exprBoolean1 : string | boolean >undefined : undefined >exprString1 : string >exprBoolean1 : boolean var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean4 : string | boolean >[null, undefined] ? exprString1 : exprBoolean1 : string | boolean >[null, undefined] : null[] >undefined : undefined >exprString1 : string >exprBoolean1 : boolean var resultIsAny3 = x.doSomeThing() ? exprAny1 : exprAny2; >resultIsAny3 : any >x.doSomeThing() ? exprAny1 : exprAny2 : any >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprAny1 : any >exprAny2 : any var resultIsBoolean3 = x("x") ? exprBoolean1 : exprBoolean2; >resultIsBoolean3 : boolean >x("x") ? exprBoolean1 : exprBoolean2 : boolean >x("x") : any >x : any >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber3 = x(x) ? exprNumber1 : exprNumber2; >resultIsNumber3 : number >x(x) ? exprNumber1 : exprNumber2 : number >x(x) : any >x : any >x : any >exprNumber1 : number >exprNumber2 : number var resultIsString3 = x("x") ? exprString1 : exprString2; >resultIsString3 : string >x("x") ? exprString1 : exprString2 : string >x("x") : any >x : any >exprString1 : string >exprString2 : string var resultIsObject3 = x.doSomeThing() ? exprIsObject1 : exprIsObject2; >resultIsObject3 : Object >x.doSomeThing() ? exprIsObject1 : exprIsObject2 : Object >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean5 = x.doSomeThing() ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean5 : string | boolean >x.doSomeThing() ? exprString1 : exprBoolean1 : string | boolean >x.doSomeThing() : any >x.doSomeThing : any >x : any >doSomeThing : any >exprString1 : string >exprBoolean1 : boolean