=== tests/cases/compiler/bestCommonTypeWithContextualTyping.ts === interface Contextual { >Contextual : Contextual dummy; >dummy : any p?: number; >p : number } interface Ellement { >Ellement : Ellement dummy; >dummy : any p: any; >p : any } var e: Ellement; >e : Ellement >Ellement : Ellement // All of these should pass. Neither type is a supertype of the other, but the RHS should // always use Ellement in these examples (not Contextual). Because Ellement is assignable // to Contextual, no errors. var arr: Contextual[] = [e]; // Ellement[] >arr : Contextual[] >Contextual : Contextual >[e] : Ellement[] >e : Ellement var obj: { [s: string]: Contextual } = { s: e }; // { s: Ellement; [s: string]: Ellement } >obj : { [s: string]: Contextual; } >s : string >Contextual : Contextual >{ s: e } : { [x: string]: Ellement; s: Ellement; } >s : Ellement >e : Ellement var conditional: Contextual = null ? e : e; // Ellement >conditional : Contextual >Contextual : Contextual >null ? e : e : Ellement >e : Ellement >e : Ellement var contextualOr: Contextual = e || e; // Ellement >contextualOr : Contextual >Contextual : Contextual >e || e : Ellement >e : Ellement >e : Ellement