Whether `a is b` is compilable or not is depends on that `typeof(true ? a : b)` is computable.
Between all class types (except shared mismatch), can have the common type Object with qualifier (except `shared` mismatching). So In this case `lhs is rhs` should be compiled. It is compiler bug.
But, I can agree that if both side of is have distinct types (such as D and E), the result can be **constant-folding** to false.