[FIR] Don't create smartcast node if smartcasted type is equal to original type

This commit is contained in:
Dmitriy Novozhilov
2021-02-19 17:47:44 +03:00
parent 1c0d862e40
commit 469252f6b4
30 changed files with 272 additions and 271 deletions
@@ -388,17 +388,17 @@ fun <T> case_8(x: T) {
// TESTCASE NUMBER: 9
fun <T : Number> case_9(x: T) {
if (x != null) {
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.toByte()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.toByte()
x.equals(null)
@@ -683,18 +683,18 @@ fun <T> case_12(x: T) where T : Number?, T: Interface1? {
*/
fun <T> case_13(x: T) where T : Out<*>?, T: Comparable<T?> {
if (x != null) {
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.get()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.compareTo(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.get()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.compareTo(null)
x.equals(null)
@@ -3987,18 +3987,18 @@ fun <T> case_56(x: T) where T : Number?, T: Interface1? {
*/
fun <T> case_57(x: T) where T : Out<*>?, T: Comparable<T?> {
if (x != null) {
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.get()
<!DEBUG_INFO_EXPRESSION_TYPE("T & T")!>x<!>.compareTo(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.equals(null)
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableT
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.propNullableAny
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableT()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.funNullableAny()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.get()
<!DEBUG_INFO_EXPRESSION_TYPE("T")!>x<!>.compareTo(null)
x.equals(null)