summaryrefslogtreecommitdiff
path: root/java/typeMigration/testData/refactoring/typeMigration
diff options
context:
space:
mode:
Diffstat (limited to 'java/typeMigration/testData/refactoring/typeMigration')
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t01/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t01/after/test.java39
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t01/before/test.java39
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t02/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t02/after/test.java20
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t02/before/test.java20
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t03/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t03/after/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t03/before/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t04/after/Test.items21
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t04/after/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t04/before/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t05/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t05/after/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t05/before/test.java22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t06/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t06/after/test.java25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t06/before/test.java25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t07/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t07/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t07/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t08/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t08/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t08/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t09/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t09/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t09/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t10/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t10/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t10/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t100/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t100/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t100/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t101/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t101/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t101/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t102/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t102/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t102/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t103/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t103/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t103/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t104/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t104/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t104/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t105/after/Test.items7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t105/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t105/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t106/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t106/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t106/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t107/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t107/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t107/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t108/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t108/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t108/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t109/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t109/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t109/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t11/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t11/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t11/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t110/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t110/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t110/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t111/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t111/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t111/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t112/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t112/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t112/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t113/after/Test.items7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t113/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t113/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t114/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t114/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t114/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t115/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t115/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t115/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t116/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t116/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t116/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t117/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t117/after/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t117/before/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t118/after/Test.items7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t118/after/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t118/before/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t119/after/Test.items7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t119/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t119/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t12/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t12/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t12/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t120/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t120/after/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t120/before/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t121/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t121/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t121/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t122/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t122/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t122/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t123/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t123/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t123/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t124/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t124/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t124/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t125/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t125/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t125/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t126/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t126/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t126/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t127/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t127/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t127/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t128/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t128/after/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t128/before/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t129/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t129/after/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t129/before/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t13/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t13/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t13/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t130/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t130/after/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t130/before/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t131/after/Test.items13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t131/after/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t131/before/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t132/after/Test.items15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t132/after/test.java25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t132/before/test.java25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t133/after/Test.items16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t133/after/test.java33
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t133/before/test.java33
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t134/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t134/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t134/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t135/after/Test.items16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t135/after/test.java19
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t135/before/test.java19
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t136/after/Test.items17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t136/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t136/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t137/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t137/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t137/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t138/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t138/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t138/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t139/after/Test.items7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t139/after/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t139/before/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t14/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t14/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t14/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t15/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t15/after/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t15/before/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t16/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t16/after/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t16/before/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t17/after/Test.items18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t17/after/test.java17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t17/before/test.java17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t18/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t18/after/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t18/before/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t19/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t19/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t19/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t20/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t20/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t20/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t21/after/Test.items14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t21/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t21/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t22/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t22/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t22/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t23/after/Test.items22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t23/after/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t23/before/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t24/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t24/after/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t24/before/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t25/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t25/after/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t25/before/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t26/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t26/after/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t26/before/test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t27/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t27/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t27/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t28/after/Test.items13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t28/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t28/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t29/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t29/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t29/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t30/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t30/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t30/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t31/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t31/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t31/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t32/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t32/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t32/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t33/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t33/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t33/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t34/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t34/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t34/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t35/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t35/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t35/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t36/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t36/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t36/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t37/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t37/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t37/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t38/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t38/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t38/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t39/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t39/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t39/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t40/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t40/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t40/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t41/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t41/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t41/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t42/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t42/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t42/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t43/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t43/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t43/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t44/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t44/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t44/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t45/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t45/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t45/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t46/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t46/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t46/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t47/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t47/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t47/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t48/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t48/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t48/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t49/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t49/after/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t49/before/test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t50/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t50/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t50/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t51/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t51/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t51/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t52/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t52/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t52/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t53/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t53/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t53/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t54/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t54/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t54/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t55/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t55/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t55/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t56/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t56/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t56/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t57/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t57/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t57/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t58/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t58/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t58/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t59/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t59/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t59/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t60/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t60/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t60/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t61/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t61/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t61/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t62/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t62/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t62/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t63/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t63/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t63/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t64/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t64/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t64/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t65/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t65/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t65/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t66/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t66/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t66/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t67/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t67/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t67/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t68/after/Test.items17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t68/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t68/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t69/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t69/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t69/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t70/after/Test.items18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t70/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t70/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t71/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t71/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t71/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t72/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t72/after/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t72/before/test.java3
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t73/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t73/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t73/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t74/after/Test.items22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t74/after/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t74/before/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t75/after/Test.items38
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t75/after/test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t75/before/test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t76/after/Test.items37
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t76/after/test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t76/before/test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t77/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t77/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t77/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t78/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t78/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t78/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t79/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t79/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t79/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t80/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t80/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t80/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t81/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t81/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t81/before/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t82/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t82/after/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t82/before/test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t83/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t83/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t83/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t84/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t84/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t84/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t85/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t85/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t85/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t86/after/Test.items18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t86/after/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t86/before/test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t87/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t87/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t87/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t88/after/Test.items15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t88/after/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t88/before/test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t89/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t89/after/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t89/before/test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t90/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t90/after/test.java24
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t90/before/test.java24
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t91/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t91/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t91/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t92/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t92/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t92/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t93/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t93/after/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t93/before/test.java8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t94/after/Test.items13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t94/after/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t94/before/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t95/after/Test.items13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t95/after/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t95/before/test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t96/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t96/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t96/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t97/after/Test.items8
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t97/after/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t97/before/test.java4
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t98/after/Test.items21
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t98/after/test.java17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t98/before/test.java17
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t99/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t99/after/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/t99/before/test.java6
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigration/typeAnno/before/test.java9
420 files changed, 4145 insertions, 0 deletions
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t01/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t01/after/Test.items
new file mode 100644
index 000000000000..702373b694d5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t01/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:i.foo(new Integer[0]) : Foo
+PsiParameter:i : Foo
+PsiReferenceExpression:i : Foo
+
+Conversions:
+i.foo -> PsiMethod:moo
+
+New expression type changes:
+Fails:
+new Integer[0]->int
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t01/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t01/after/test.java
new file mode 100644
index 000000000000..cf8dd0203f05
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t01/after/test.java
@@ -0,0 +1,39 @@
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Oct 16, 2004
+ * Time: 10:10:35 PM
+ * To change this template use File | Settings | File Templates.
+ */
+
+class Foo {
+ Moo moo(int i) {
+ return null;
+ }
+}
+
+class Moo {
+ Foo foo(Integer[] j) {
+ return null;
+ }
+}
+
+class P {
+ int f(int y) {
+ return y;
+ }
+}
+
+class G extends P {
+ int f(int y) {
+ return y;
+ }
+}
+
+public class Test {
+ Moo g(Foo i) {
+ Foo j = i.moo(new Integer[0]);
+ return null;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t01/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t01/before/test.java
new file mode 100644
index 000000000000..1f7a52e4aa63
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t01/before/test.java
@@ -0,0 +1,39 @@
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Oct 16, 2004
+ * Time: 10:10:35 PM
+ * To change this template use File | Settings | File Templates.
+ */
+
+class Foo {
+ Moo moo(int i) {
+ return null;
+ }
+}
+
+class Moo {
+ Foo foo(Integer[] j) {
+ return null;
+ }
+}
+
+class P {
+ int f(int y) {
+ return y;
+ }
+}
+
+class G extends P {
+ int f(int y) {
+ return y;
+ }
+}
+
+public class Test {
+ Moo g(Moo i) {
+ Foo j = i.foo(new Integer[0]);
+ return null;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t02/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t02/after/Test.items
new file mode 100644
index 000000000000..eb13633449ca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t02/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethod:sum : java.lang.Integer
+PsiMethodCallExpression:sum(n, k) : java.lang.Integer
+
+Conversions:
+a -> $
+i + j -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t02/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t02/after/test.java
new file mode 100644
index 000000000000..5842b8fa99e0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t02/after/test.java
@@ -0,0 +1,20 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ Integer sum(int i, int j) {
+ return i + j;
+ }
+
+ int foo(int n, int k) {
+ int a;
+
+ a = sum(n, k);
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t02/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t02/before/test.java
new file mode 100644
index 000000000000..d0ebca58783c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t02/before/test.java
@@ -0,0 +1,20 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ int sum(int i, int j) {
+ return i + j;
+ }
+
+ int foo(int n, int k) {
+ int a;
+
+ a = sum(n, k);
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t03/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t03/after/Test.items
new file mode 100644
index 000000000000..f1747c90b2ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t03/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethod:sum : java.lang.Integer
+PsiMethodCallExpression:sum(i, k) : java.lang.Integer
+
+Conversions:
+a -> $
+i + j -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t03/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t03/after/test.java
new file mode 100644
index 000000000000..5fd61417ba05
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t03/after/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ Integer sum(int i, int j) {
+ return i + j;
+ }
+
+ int[] foo(int n, int k) {
+ int[] a = new int[n];
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = sum(i, k);
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t03/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t03/before/test.java
new file mode 100644
index 000000000000..9e1559784bde
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t03/before/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ int sum(int i, int j) {
+ return i + j;
+ }
+
+ int[] foo(int n, int k) {
+ int[] a = new int[n];
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = sum(i, k);
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t04/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t04/after/Test.items
new file mode 100644
index 000000000000..edea723357ea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t04/after/Test.items
@@ -0,0 +1,21 @@
+Types:
+PsiLocalVariable:a : java.lang.Long[][]
+PsiMethod:bar : java.lang.Long[]
+PsiMethod:foo : java.lang.Long[][]
+PsiMethodCallExpression:bar() : java.lang.Long[]
+PsiNewExpression:new Integer[0] : java.lang.Long[]
+PsiNewExpression:new Integer[0] : java.lang.Long[]
+PsiNewExpression:new Integer[0] : java.lang.Long[]
+PsiNewExpression:new Integer[][] {new Integer[0], new Integer[0]} : java.lang.Long[][]
+PsiReferenceExpression:a : java.lang.Long[][]
+PsiReferenceExpression:a : java.lang.Long[][]
+PsiReferenceExpression:a : java.lang.Long[][]
+
+Conversions:
+
+New expression type changes:
+new Integer[0] -> java.lang.Long[]
+new Integer[0] -> java.lang.Long[]
+new Integer[0] -> java.lang.Long[]
+new Integer[][] {new Integer[0], new Integer[0]} -> java.lang.Long[][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t04/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t04/after/test.java
new file mode 100644
index 000000000000..080208fcbd6c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t04/after/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ Long[] bar() {
+ return new Long[0];
+ }
+
+ Long[][] foo(int n, int k) {
+ Long[][] a = new Long[][]{new Long[0], new Long[0]};
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = bar();
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t04/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t04/before/test.java
new file mode 100644
index 000000000000..591b5a530d2b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t04/before/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ Integer[] bar() {
+ return new Integer[0];
+ }
+
+ Integer[] foo(int n, int k) {
+ Integer[][] a = new Integer[][] {new Integer[0], new Integer[0]};
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = bar();
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t05/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t05/after/Test.items
new file mode 100644
index 000000000000..8152c1b711e7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t05/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:i : java.lang.Integer
+PsiReferenceExpression:i : java.lang.Integer
+
+Conversions:
+i -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t05/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t05/after/test.java
new file mode 100644
index 000000000000..b74d13b84fda
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t05/after/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ int sum(Integer i, int j) {
+ return i + j;
+ }
+
+ int[] foo(int n, int k) {
+ int[] a = new int[] {1, 2, 3, 4};
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = sum(i, k);
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t05/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t05/before/test.java
new file mode 100644
index 000000000000..e8a96127f4fd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t05/before/test.java
@@ -0,0 +1,22 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test {
+ int sum(int i, int j) {
+ return i + j;
+ }
+
+ int[] foo(int n, int k) {
+ int[] a = new int[] {1, 2, 3, 4};
+
+ for (int i = 0; i < a.length; i++) {
+ a[i] = sum(i, k);
+ }
+
+ return a;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t06/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t06/after/Test.items
new file mode 100644
index 000000000000..3ad4c0f7992f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t06/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiLocalVariable:a : B
+PsiMethod:getA : B
+PsiMethodCallExpression:getA () : B
+PsiReferenceExpression:a : B
+
+Conversions:
+
+New expression type changes:
+Fails:
+new A ()->B
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t06/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t06/after/test.java
new file mode 100644
index 000000000000..f4fa6ab1f876
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t06/after/test.java
@@ -0,0 +1,25 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+class A {}
+class B {}
+
+public class Test {
+ B getA() {
+ return new A ();
+ }
+
+ int foo() {
+ B a = getA ();
+
+ if (a != null){
+ return 0;
+ }
+
+ return 1;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t06/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t06/before/test.java
new file mode 100644
index 000000000000..862356ebd9cc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t06/before/test.java
@@ -0,0 +1,25 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: db
+ * Date: Nov 15, 2004
+ * Time: 5:40:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+class A {}
+class B {}
+
+public class Test {
+ A getA() {
+ return new A ();
+ }
+
+ int foo() {
+ A a = getA ();
+
+ if (a != null){
+ return 0;
+ }
+
+ return 1;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t07/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t07/after/Test.items
new file mode 100644
index 000000000000..12252787a292
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t07/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.lang.Integer[]
+PsiNewExpression:new int[0] : java.lang.Integer[]
+
+Conversions:
+
+New expression type changes:
+new int[0] -> java.lang.Integer[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t07/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t07/after/test.java
new file mode 100644
index 000000000000..09d7a0982009
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t07/after/test.java
@@ -0,0 +1,3 @@
+public class Test {
+ Integer[] f = new Integer[0];
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t07/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t07/before/test.java
new file mode 100644
index 000000000000..87955af32435
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t07/before/test.java
@@ -0,0 +1,3 @@
+public class Test {
+ int[] f = new int[0];
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t08/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t08/after/Test.items
new file mode 100644
index 000000000000..7c09ce5a46f7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t08/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.lang.String[]
+PsiNewExpression:new Integer[0] : java.lang.String[]
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:f : java.lang.String[]
+
+Conversions:
+
+New expression type changes:
+new Integer[0] -> java.lang.String[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t08/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t08/after/test.java
new file mode 100644
index 000000000000..9f13a80a2f2a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t08/after/test.java
@@ -0,0 +1,6 @@
+public class Test {
+ String[] f = new String[0];
+ void foo() {
+ for (String i : f) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t08/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t08/before/test.java
new file mode 100644
index 000000000000..e38a9aa3155d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t08/before/test.java
@@ -0,0 +1,6 @@
+public class Test {
+ Integer[] f = new Integer[0];
+ void foo() {
+ for (Integer i : f) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t09/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t09/after/Test.items
new file mode 100644
index 000000000000..39394462b76e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t09/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:f : java.lang.String[]
+PsiNewExpression:new Integer[0] : java.lang.String[]
+PsiParameter:g : java.lang.String[]
+PsiReferenceExpression:f : java.lang.String[]
+
+Conversions:
+f -> $
+
+New expression type changes:
+new Integer[0] -> java.lang.String[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t09/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t09/after/test.java
new file mode 100644
index 000000000000..5e779c9e12f5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t09/after/test.java
@@ -0,0 +1,8 @@
+public class Test {
+ String[] f = new String[0];
+ void foo() {
+ bar(1, f);
+ }
+
+ void bar(int i, String[] g){}
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t09/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t09/before/test.java
new file mode 100644
index 000000000000..db3f02ed1976
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t09/before/test.java
@@ -0,0 +1,8 @@
+public class Test {
+ Integer[] f = new Integer[0];
+ void foo() {
+ bar(1, f);
+ }
+
+ void bar(int i, Integer[] g){}
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t10/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t10/after/Test.items
new file mode 100644
index 000000000000..77d161720fb5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t10/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.List<java.lang.String>
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:f : java.util.List<java.lang.String>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t10/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t10/after/test.java
new file mode 100644
index 000000000000..7820f54d0340
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t10/after/test.java
@@ -0,0 +1,7 @@
+import java.util.List;
+public class Test {
+ List<String> f;
+ void foo() {
+ for (String i : f) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t10/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t10/before/test.java
new file mode 100644
index 000000000000..726f23a4bf8d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t10/before/test.java
@@ -0,0 +1,7 @@
+import java.util.List;
+public class Test {
+ List<Integer> f;
+ void foo() {
+ for (Integer i : f) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t100/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t100/after/Test.items
new file mode 100644
index 000000000000..135dca6a135e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t100/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.Map<java.lang.String,java.lang.Integer>
+PsiNewExpression:new HashMap<String,String>() : java.util.HashMap<java.lang.String,java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+new HashMap<String,String>() -> java.util.HashMap<java.lang.String,java.lang.Integer>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t100/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t100/after/test.java
new file mode 100644
index 000000000000..b2917c86149e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t100/after/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ Map<String, Integer> f = new HashMap<>();
+
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t100/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t100/before/test.java
new file mode 100644
index 000000000000..7bf03e3a27da
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t100/before/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ Map<String,String> f = new HashMap<String,String>();
+
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t101/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t101/after/Test.items
new file mode 100644
index 000000000000..285bc5b6ca51
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t101/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.util.ArrayList<java.lang.Integer>
+PsiParameter:p : java.util.ArrayList<java.lang.Integer>[]
+PsiReferenceExpression:p : java.util.ArrayList<java.lang.Integer>[]
+
+Conversions:
+p.get(0) -> $qualifier$[$i$] $qualifier$.get($i$) p.get(0)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t101/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t101/after/test.java
new file mode 100644
index 000000000000..6344b428b46c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t101/after/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ void meth(ArrayList<Integer>[] p) {
+ ArrayList<Integer> v = p[0];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t101/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t101/before/test.java
new file mode 100644
index 000000000000..e16f3d100bc9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t101/before/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ void meth(List<ArrayList<Integer>> p) {
+ ArrayList<Integer> v = p.get(0);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t102/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t102/after/Test.items
new file mode 100644
index 000000000000..b9f794b195bf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t102/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:s : java.lang.Object[]
+PsiReferenceExpression:s : java.lang.Object[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+s->java.lang.Object[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t102/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t102/after/test.java
new file mode 100644
index 000000000000..dcd056fcaf90
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t102/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(Object[] s) {
+ s.add(null);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t102/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t102/before/test.java
new file mode 100644
index 000000000000..f59b5db84644
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t102/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(Set<? extends Object> s) {
+ s.add(null);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t103/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t103/after/Test.items
new file mode 100644
index 000000000000..b13c3192a1d8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t103/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:l : java.lang.Integer[]
+PsiReferenceExpression:l : java.lang.Integer[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+l->java.lang.Integer[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t103/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t103/after/test.java
new file mode 100644
index 000000000000..af807d53c7b0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t103/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(Integer[] l) {
+ l.set(1, "");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t103/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t103/before/test.java
new file mode 100644
index 000000000000..7e5802d50574
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t103/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(ArrayList<String> l) {
+ l.set(1, "");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t104/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t104/after/Test.items
new file mode 100644
index 000000000000..f085abb3c681
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t104/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:l : java.lang.String[]
+PsiReferenceExpression:l : java.lang.String[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+l->java.lang.String[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t104/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t104/after/test.java
new file mode 100644
index 000000000000..d70a09a513bd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t104/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(String[] l) {
+ l.set(1, "");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t104/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t104/before/test.java
new file mode 100644
index 000000000000..bc4b40c061a2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t104/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class Test {
+ void method(ArrayList l) {
+ l.set(1, "");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t105/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t105/after/Test.items
new file mode 100644
index 000000000000..7821f01df96c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t105/after/Test.items
@@ -0,0 +1,7 @@
+Types:
+PsiField:t : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t105/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t105/after/test.java
new file mode 100644
index 000000000000..71797316503f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t105/after/test.java
@@ -0,0 +1,3 @@
+public class Test<T> {
+ String t;
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t105/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t105/before/test.java
new file mode 100644
index 000000000000..763dc905176d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t105/before/test.java
@@ -0,0 +1,3 @@
+public class Test<T> {
+ T t;
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t106/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t106/after/Test.items
new file mode 100644
index 000000000000..2fab8a1f5fae
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t106/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:t : java.lang.String
+PsiReferenceExpression:t : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+t->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t106/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t106/after/test.java
new file mode 100644
index 000000000000..dafbfca4a742
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t106/after/test.java
@@ -0,0 +1,6 @@
+public class Test<T extends Number> {
+ String t;
+ void foo() {
+ int i = t.intValue();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t106/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t106/before/test.java
new file mode 100644
index 000000000000..65ad21055710
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t106/before/test.java
@@ -0,0 +1,6 @@
+public class Test<T extends Number> {
+ T t;
+ void foo() {
+ int i = t.intValue();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t107/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t107/after/Test.items
new file mode 100644
index 000000000000..93a16148be72
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t107/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:t : java.lang.Integer
+PsiMethodCallExpression:t.intValue() : int
+PsiReferenceExpression:t : java.lang.Integer
+
+Conversions:
+t.intValue() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t107/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t107/after/test.java
new file mode 100644
index 000000000000..ce44f19e2458
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t107/after/test.java
@@ -0,0 +1,6 @@
+public class Test<T extends Number> {
+ Integer t;
+ void foo() {
+ int i = t.intValue();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t107/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t107/before/test.java
new file mode 100644
index 000000000000..65ad21055710
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t107/before/test.java
@@ -0,0 +1,6 @@
+public class Test<T extends Number> {
+ T t;
+ void foo() {
+ int i = t.intValue();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t108/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t108/after/Test.items
new file mode 100644
index 000000000000..a9f530ce25f7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t108/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:integer.intValue() : int
+PsiParameter:integer : java.lang.Number
+PsiParameter:l : java.util.List<? extends java.lang.Number>
+PsiReferenceExpression:integer : java.lang.Number
+PsiReferenceExpression:l : java.util.List<? extends java.lang.Number>
+
+Conversions:
+integer.intValue() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t108/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t108/after/test.java
new file mode 100644
index 000000000000..26b9322b4739
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t108/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<? extends Number> l) {
+ for (Number integer : l) {
+ System.out.println(integer.intValue());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t108/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t108/before/test.java
new file mode 100644
index 000000000000..08a3229cd932
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t108/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<Integer> l) {
+ for (Integer integer : l) {
+ System.out.println(integer.intValue());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t109/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t109/after/Test.items
new file mode 100644
index 000000000000..6a47f6675781
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t109/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:integer.hashCode() : int
+PsiParameter:integer : java.lang.Object
+PsiParameter:l : java.util.List<? super java.lang.Number>
+PsiReferenceExpression:integer : java.lang.Object
+PsiReferenceExpression:l : java.util.List<? super java.lang.Number>
+
+Conversions:
+integer.hashCode() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t109/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t109/after/test.java
new file mode 100644
index 000000000000..bae70cd5b0d4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t109/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<? super Number> l) {
+ for (Object integer : l) {
+ System.out.println(integer.hashCode());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t109/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t109/before/test.java
new file mode 100644
index 000000000000..26280e892cd0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t109/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<Integer> l) {
+ for (Integer integer : l) {
+ System.out.println(integer.hashCode());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t11/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t11/after/Test.items
new file mode 100644
index 000000000000..4058a7862ff2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t11/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.util.Map<java.lang.String,java.lang.Integer>
+PsiMethodCallExpression:f.keySet() : java.util.Set<java.lang.String>
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:f : java.util.Map<java.lang.String,java.lang.Integer>
+
+Conversions:
+f.keySet() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t11/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t11/after/test.java
new file mode 100644
index 000000000000..1491875ea2b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t11/after/test.java
@@ -0,0 +1,7 @@
+import java.util.Map;
+public class Test {
+ Map<String, Integer> f;
+ void foo() {
+ for (String i : f.keySet()) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t11/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t11/before/test.java
new file mode 100644
index 000000000000..b0aa7086f175
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t11/before/test.java
@@ -0,0 +1,7 @@
+import java.util.Map;
+public class Test {
+ Map<Integer, Integer> f;
+ void foo() {
+ for (Integer i : f.keySet()) {}
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t110/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t110/after/Test.items
new file mode 100644
index 000000000000..3853e035e26b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t110/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiParameter:integer : java.lang.String
+PsiParameter:l : java.util.List<? extends java.lang.String>
+PsiReferenceExpression:integer : java.lang.String
+PsiReferenceExpression:l : java.util.List<? extends java.lang.String>
+
+Conversions:
+
+New expression type changes:
+Fails:
+integer->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t110/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t110/after/test.java
new file mode 100644
index 000000000000..cb813fd6567f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t110/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<? extends String> l) {
+ for (String integer : l) {
+ System.out.println(integer.intValue());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t110/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t110/before/test.java
new file mode 100644
index 000000000000..08a3229cd932
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t110/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ void method(List<Integer> l) {
+ for (Integer integer : l) {
+ System.out.println(integer.intValue());
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t111/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t111/after/Test.items
new file mode 100644
index 000000000000..29717a0b2377
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t111/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiParameter:i : java.lang.Integer[]
+PsiReferenceExpression:i : java.lang.Integer[]
+PsiReferenceExpression:i : java.lang.Integer[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+i->java.lang.Integer[]
+i++->java.lang.Integer[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t111/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t111/after/test.java
new file mode 100644
index 000000000000..e257e485d6bb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t111/after/test.java
@@ -0,0 +1,7 @@
+public class Test {
+ void method(Integer[] i) {
+ if (i == 0) {
+ i++;
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t111/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t111/before/test.java
new file mode 100644
index 000000000000..2620dd9f5d6a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t111/before/test.java
@@ -0,0 +1,7 @@
+public class Test {
+ void method(Integer i) {
+ if (i == 0) {
+ i++;
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t112/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t112/after/Test.items
new file mode 100644
index 000000000000..78f2ed729f10
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t112/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiMethod:method : java.lang.Integer[]
+
+Conversions:
+112 -> new java.lang.Integer[]{$qualifier$} $qualifier$ 112
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t112/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t112/after/test.java
new file mode 100644
index 000000000000..c31ec11010c3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t112/after/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ Integer[] method() {
+ return new Integer[]{112};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t112/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t112/before/test.java
new file mode 100644
index 000000000000..e7bf28f0de1e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t112/before/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ Integer method() {
+ return 112;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t113/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t113/after/Test.items
new file mode 100644
index 000000000000..1b69785be552
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t113/after/Test.items
@@ -0,0 +1,7 @@
+Types:
+PsiParameter:p : java.lang.Number...
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t113/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t113/after/test.java
new file mode 100644
index 000000000000..9f9bdcaffad7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t113/after/test.java
@@ -0,0 +1,7 @@
+public class Test {
+ void method(Number... p) {}
+
+ public void doSmth() {
+ m(123);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t113/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t113/before/test.java
new file mode 100644
index 000000000000..6627e8d101de
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t113/before/test.java
@@ -0,0 +1,7 @@
+public class Test {
+ void method(Integer... p) {}
+
+ public void doSmth() {
+ m(123);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t114/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t114/after/Test.items
new file mode 100644
index 000000000000..b6c70f112866
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t114/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.lang.String...
+PsiReferenceExpression:p : java.lang.String[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[0]->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t114/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t114/after/test.java
new file mode 100644
index 000000000000..6e2b9f24c22a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t114/after/test.java
@@ -0,0 +1,9 @@
+public class Test {
+ void method(String... p) {
+ int i = p[0].intValue();
+ }
+
+ public void doSmth() {
+ m(123);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t114/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t114/before/test.java
new file mode 100644
index 000000000000..f73951e56432
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t114/before/test.java
@@ -0,0 +1,9 @@
+public class Test {
+ void method(Integer... p) {
+ int i = p[0].intValue();
+ }
+
+ public void doSmth() {
+ m(123);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t115/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t115/after/Test.items
new file mode 100644
index 000000000000..b07cf0af793c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t115/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:i : java.lang.String...
+
+Conversions:
+
+New expression type changes:
+Fails:
+2->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t115/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t115/after/test.java
new file mode 100644
index 000000000000..8d69a2330c70
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t115/after/test.java
@@ -0,0 +1,8 @@
+class Test {
+ void foo(String... i) {
+ }
+
+ void bar() {
+ foo("str", 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t115/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t115/before/test.java
new file mode 100644
index 000000000000..f585aba2e91c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t115/before/test.java
@@ -0,0 +1,8 @@
+class Test {
+ void foo(Object... i) {
+ }
+
+ void bar() {
+ foo("str", 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t116/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t116/after/Test.items
new file mode 100644
index 000000000000..0aee5ef814c6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t116/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:str : java.lang.String
+PsiParameter:number : java.lang.String
+PsiReferenceExpression:number : java.lang.String
+PsiReferenceExpression:str : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t116/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t116/after/test.java
new file mode 100644
index 000000000000..95ddfb44251f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t116/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ String str;
+
+ void foo(String[] p) {
+ for (String number : p) {
+ number = str;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t116/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t116/before/test.java
new file mode 100644
index 000000000000..d68047e81823
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t116/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ Number str;
+
+ void foo(String[] p) {
+ for (Number number : p) {
+ number = str;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t117/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t117/after/Test.items
new file mode 100644
index 000000000000..0aee5ef814c6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t117/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:str : java.lang.String
+PsiParameter:number : java.lang.String
+PsiReferenceExpression:number : java.lang.String
+PsiReferenceExpression:str : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t117/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t117/after/test.java
new file mode 100644
index 000000000000..3172eaa133dc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t117/after/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+ String str;
+
+ void foo(List<String> p) {
+ for (String number : p) {
+ number = str;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t117/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t117/before/test.java
new file mode 100644
index 000000000000..46cde69dca96
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t117/before/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+ Number str;
+
+ void foo(List<String> p) {
+ for (Number number : p) {
+ number = str;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t118/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t118/after/Test.items
new file mode 100644
index 000000000000..dcd1be2928cb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t118/after/Test.items
@@ -0,0 +1,7 @@
+Types:
+PsiParameter:p : java.lang.Integer...
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t118/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t118/after/test.java
new file mode 100644
index 000000000000..37d684a97957
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t118/after/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+
+ void method(Integer... p) {
+ }
+
+ public void doSmth(ArrayList<Integer> p) {
+ method(p.get(2));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t118/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t118/before/test.java
new file mode 100644
index 000000000000..012a188e5ad5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t118/before/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+
+ void method(Integer p) {
+ }
+
+ public void doSmth(ArrayList<Integer> p) {
+ method(p.get(2));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t119/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t119/after/Test.items
new file mode 100644
index 000000000000..dcd1be2928cb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t119/after/Test.items
@@ -0,0 +1,7 @@
+Types:
+PsiParameter:p : java.lang.Integer...
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t119/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t119/after/test.java
new file mode 100644
index 000000000000..28446b6bc761
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t119/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+
+ void method(Integer... p) {
+ }
+
+ public void doSmth(Integer[] p) {
+ method(p[2]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t119/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t119/before/test.java
new file mode 100644
index 000000000000..28aeed25cefa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t119/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+
+ void method(Integer p) {
+ }
+
+ public void doSmth(Integer[] p) {
+ method(p[2]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t12/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t12/after/Test.items
new file mode 100644
index 000000000000..a1b75e0f23ac
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t12/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.List<java.lang.String>
+PsiLocalVariable:i : java.lang.String
+PsiReferenceExpression:f : java.util.List<java.lang.String>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t12/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t12/after/test.java
new file mode 100644
index 000000000000..657869206253
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t12/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+public class Test {
+ List<String> f;
+ void foo() {
+ String i = Collections.min(f);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t12/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t12/before/test.java
new file mode 100644
index 000000000000..24199ff02584
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t12/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+public class Test {
+ List<Integer> f;
+ void foo() {
+ Integer i = Collections.min(f);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t120/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t120/after/Test.items
new file mode 100644
index 000000000000..6f23d60f1d3c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t120/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiParameter:p : java.lang.String...
+PsiParameter:p : java.lang.String[]
+PsiReferenceExpression:p : java.lang.String[]
+PsiReferenceExpression:p : java.lang.String[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[3]->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t120/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t120/after/test.java
new file mode 100644
index 000000000000..e40c1215581b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t120/after/test.java
@@ -0,0 +1,10 @@
+class Test {
+
+ void method(String... p) {
+ }
+
+ public void doSmth(String[] p) {
+ method(p[2]);
+ System.out.println(p[3].intValue());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t120/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t120/before/test.java
new file mode 100644
index 000000000000..0f65e57d94ee
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t120/before/test.java
@@ -0,0 +1,10 @@
+class Test {
+
+ void method(Integer p) {
+ }
+
+ public void doSmth(Integer[] p) {
+ method(p[2]);
+ System.out.println(p[3].intValue());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t121/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t121/after/Test.items
new file mode 100644
index 000000000000..dadc2c72891a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t121/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:p.add(8) : boolean
+PsiParameter:p : java.util.ArrayList<java.lang.Float>
+PsiReferenceExpression:p : java.util.ArrayList<java.lang.Float>
+
+Conversions:
+8 -> $
+p.add(8) -> $
+
+New expression type changes:
+Fails:
+8->java.lang.Float
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t121/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t121/after/test.java
new file mode 100644
index 000000000000..e3a952e4d560
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t121/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+
+ void method(ArrayList<Float> p){
+ p.add(8);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t121/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t121/before/test.java
new file mode 100644
index 000000000000..aad87ca532b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t121/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+
+ void method(ArrayList<Number> p){
+ p.add(8);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t122/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t122/after/Test.items
new file mode 100644
index 000000000000..00092fc53a55
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t122/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.List<java.lang.Integer>[]
+PsiReferenceExpression:p : java.util.List<java.lang.Integer>[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->java.util.List<java.lang.Integer>[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t122/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t122/after/test.java
new file mode 100644
index 000000000000..5784ee52e360
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t122/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+
+ void method(List<Integer>[] p){
+ ArrayList<Integer> v = p.get(0);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t122/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t122/before/test.java
new file mode 100644
index 000000000000..bb086dad2af8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t122/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+
+ void method(List<ArrayList<Integer>> p){
+ ArrayList<Integer> v = p.get(0);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t123/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t123/after/Test.items
new file mode 100644
index 000000000000..691d3e6a1e26
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t123/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:n : java.lang.Integer
+PsiParameter:number : java.lang.Integer
+PsiParameter:p : java.lang.Integer[]
+PsiReferenceExpression:n : java.lang.Integer
+PsiReferenceExpression:number : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer[]
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t123/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t123/after/test.java
new file mode 100644
index 000000000000..883991ffec9d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t123/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ Integer n;
+
+ void foo(Integer[] p) {
+ for (Integer number : p) {
+ n = number;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t123/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t123/before/test.java
new file mode 100644
index 000000000000..516fcf828234
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t123/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ Number n;
+
+ void foo(Number[] p) {
+ for (Number number : p) {
+ n = number;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t124/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t124/after/Test.items
new file mode 100644
index 000000000000..4a7df94f76b2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t124/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->java.lang.Integer
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t124/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t124/after/test.java
new file mode 100644
index 000000000000..f41fe88534f4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t124/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public <U> U meth(Integer p) {
+ return p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t124/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t124/before/test.java
new file mode 100644
index 000000000000..b40d864d16c7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t124/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public <U> U meth(U p) {
+ return p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t125/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t125/after/Test.items
new file mode 100644
index 000000000000..3859bad4e428
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t125/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+
+Conversions:
+
+New expression type changes:
+Fails:
+Collections.singletonList(p)->java.util.List<java.lang.Integer>
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t125/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t125/after/test.java
new file mode 100644
index 000000000000..7854f476cc9e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t125/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ public <U> List<U> meth(Integer p) {
+ return Collections.singletonList(p);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t125/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t125/before/test.java
new file mode 100644
index 000000000000..30cf3914d62a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t125/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ public <U> List<U> meth(U p) {
+ return Collections.singletonList(p);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t126/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t126/after/Test.items
new file mode 100644
index 000000000000..f870c21c0523
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t126/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiMethod:meth : T
+
+Conversions:
+
+New expression type changes:
+Fails:
+map.get(2)->T
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t126/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t126/after/test.java
new file mode 100644
index 000000000000..7b2814378d28
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t126/after/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class Test<T> {
+ Map<Integer, String> map;
+
+ T meth() {
+ return map.get(2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t126/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t126/before/test.java
new file mode 100644
index 000000000000..0dc76ccbdc72
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t126/before/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class Test<T> {
+ Map<Integer, String> map;
+
+ String meth() {
+ return map.get(2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t127/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t127/after/Test.items
new file mode 100644
index 000000000000..78aa0fbd396b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t127/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiLocalVariable:i : long
+PsiMethod:test234 : long
+PsiMethodCallExpression:test234(1,
+ 2) : long
+
+Conversions:
+1 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t127/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t127/after/test.java
new file mode 100644
index 000000000000..06a4d09a41a6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t127/after/test.java
@@ -0,0 +1,13 @@
+public class Test {
+
+ public long test234(int i,
+ int j)
+ {
+ return 1;
+ }
+
+ public void foo() {
+ long i = test234(1,
+ 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t127/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t127/before/test.java
new file mode 100644
index 000000000000..dd2c813fd38e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t127/before/test.java
@@ -0,0 +1,13 @@
+public class Test {
+
+ public int test234(int i,
+ int j)
+ {
+ return 1;
+ }
+
+ public void foo() {
+ int i = test234(1,
+ 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t128/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t128/after/Test.items
new file mode 100644
index 000000000000..24ec208dbb43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t128/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:e.printStackTrace() : void
+PsiParameter:e : Test.E
+PsiReferenceExpression:e : Test.E
+
+Conversions:
+e.printStackTrace() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t128/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t128/after/test.java
new file mode 100644
index 000000000000..8f2ad153d911
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t128/after/test.java
@@ -0,0 +1,16 @@
+class Test {
+ static class E extends Exception { }
+ static class E1 extends E { }
+ static class E2 extends E { }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t128/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t128/before/test.java
new file mode 100644
index 000000000000..33bb6bf973c1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t128/before/test.java
@@ -0,0 +1,16 @@
+class Test {
+ static class E extends Exception { }
+ static class E1 extends E { }
+ static class E2 extends E { }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E1 | E2 e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t129/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t129/after/Test.items
new file mode 100644
index 000000000000..8ca26492b5bd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t129/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:e.printStackTrace() : void
+PsiParameter:e : Test.E1 | Test.E2
+PsiReferenceExpression:e : Test.E1 | Test.E2
+
+Conversions:
+e.printStackTrace() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t129/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t129/after/test.java
new file mode 100644
index 000000000000..33bb6bf973c1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t129/after/test.java
@@ -0,0 +1,16 @@
+class Test {
+ static class E extends Exception { }
+ static class E1 extends E { }
+ static class E2 extends E { }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E1 | E2 e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t129/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t129/before/test.java
new file mode 100644
index 000000000000..8f2ad153d911
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t129/before/test.java
@@ -0,0 +1,16 @@
+class Test {
+ static class E extends Exception { }
+ static class E1 extends E { }
+ static class E2 extends E { }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t13/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t13/after/Test.items
new file mode 100644
index 000000000000..ca5cc75efa2e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t13/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.util.List<java.lang.Integer>
+PsiMethodCallExpression:f.add("val") : boolean
+PsiReferenceExpression:f : java.util.List<java.lang.Integer>
+
+Conversions:
+f.add("val") -> $
+
+New expression type changes:
+Fails:
+"val"->java.lang.Integer
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t13/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t13/after/test.java
new file mode 100644
index 000000000000..53b97a29e38c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t13/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+public class Test {
+ List<Integer> f;
+ void foo() {
+ f.add("val");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t13/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t13/before/test.java
new file mode 100644
index 000000000000..9024eab86966
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t13/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+public class Test {
+ List<String> f;
+ void foo() {
+ f.add("val");
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t130/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t130/after/Test.items
new file mode 100644
index 000000000000..056ae7968e06
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t130/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:e.printStackTrace() : void
+PsiParameter:e : Test.E
+PsiReferenceExpression:e : Test.E
+PsiReferenceExpression:e : Test.E
+
+Conversions:
+e.printStackTrace() -> $
+
+New expression type changes:
+Fails:
+e->Test.E
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t130/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t130/after/test.java
new file mode 100644
index 000000000000..67ed3db2315a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t130/after/test.java
@@ -0,0 +1,18 @@
+class Test {
+ static class E extends Exception { }
+ static interface I { void i(); }
+ static class E1 extends E implements I { public void i() { } }
+ static class E2 extends E implements I { public void i() { } }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E e) {
+ e.printStackTrace();
+ e.i();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t130/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t130/before/test.java
new file mode 100644
index 000000000000..7ee7852db3d4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t130/before/test.java
@@ -0,0 +1,18 @@
+class Test {
+ static class E extends Exception { }
+ static interface I { void i(); }
+ static class E1 extends E implements I { public void i() { } }
+ static class E2 extends E implements I { public void i() { } }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E1 | E2 e) {
+ e.printStackTrace();
+ e.i();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t131/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t131/after/Test.items
new file mode 100644
index 000000000000..e8d3b6152d2d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t131/after/Test.items
@@ -0,0 +1,13 @@
+Types:
+PsiMethodCallExpression:e.i() : void
+PsiMethodCallExpression:e.printStackTrace() : void
+PsiParameter:e : Test.E2 | Test.E1
+PsiReferenceExpression:e : Test.E2 | Test.E1
+PsiReferenceExpression:e : Test.E2 | Test.E1
+
+Conversions:
+e.i() -> $
+e.printStackTrace() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t131/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t131/after/test.java
new file mode 100644
index 000000000000..5c02bb8a41f2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t131/after/test.java
@@ -0,0 +1,18 @@
+class Test {
+ static class E extends Exception { }
+ static interface I { void i(); }
+ static class E1 extends E implements I { public void i() { } }
+ static class E2 extends E implements I { public void i() { } }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E2 | E1 e) {
+ e.printStackTrace();
+ e.i();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t131/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t131/before/test.java
new file mode 100644
index 000000000000..7ee7852db3d4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t131/before/test.java
@@ -0,0 +1,18 @@
+class Test {
+ static class E extends Exception { }
+ static interface I { void i(); }
+ static class E1 extends E implements I { public void i() { } }
+ static class E2 extends E implements I { public void i() { } }
+
+ void m(boolean f) {
+ try {
+ if (f)
+ throw new E1();
+ else
+ throw new E2();
+ } catch (E1 | E2 e) {
+ e.printStackTrace();
+ e.i();
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t132/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t132/after/Test.items
new file mode 100644
index 000000000000..e5b813b90288
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t132/after/Test.items
@@ -0,0 +1,15 @@
+Types:
+PsiMethodCallExpression:i.f() : void
+PsiMethodCallExpression:i.f() : void
+PsiParameter:i : I
+PsiParameter:i : I
+PsiParameter:i : I
+PsiReferenceExpression:i : I
+PsiReferenceExpression:i : I
+
+Conversions:
+i.f() -> $
+i.f() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t132/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t132/after/test.java
new file mode 100644
index 000000000000..6f53c98f5459
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t132/after/test.java
@@ -0,0 +1,25 @@
+interface I {
+ void f();
+}
+
+interface J extends I {
+ void g();
+}
+
+public interface Test {
+ void h(I i);
+}
+
+class B implements Test {
+ @Override
+ public void h(I i) {
+ i.f();
+ }
+}
+
+class C implements Test {
+ @Override
+ public void h(I i) {
+ i.f();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t132/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t132/before/test.java
new file mode 100644
index 000000000000..2e6ab23c21d6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t132/before/test.java
@@ -0,0 +1,25 @@
+interface I {
+ void f();
+}
+
+interface J extends I {
+ void g();
+}
+
+public interface Test {
+ void h(J i);
+}
+
+class B implements Test {
+ @Override
+ public void h(J i) {
+ i.f();
+ }
+}
+
+class C implements Test {
+ @Override
+ public void h(J i) {
+ i.f();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t133/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t133/after/Test.items
new file mode 100644
index 000000000000..777fddf90a83
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t133/after/Test.items
@@ -0,0 +1,16 @@
+Types:
+PsiMethodCallExpression:i.f() : void
+PsiMethodCallExpression:i.f() : void
+PsiParameter:i : I
+PsiParameter:i : I
+PsiParameter:i : I
+PsiParameter:i : I
+PsiReferenceExpression:i : I
+PsiReferenceExpression:i : I
+
+Conversions:
+i.f() -> $
+i.f() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t133/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t133/after/test.java
new file mode 100644
index 000000000000..41db920f7120
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t133/after/test.java
@@ -0,0 +1,33 @@
+interface I {
+ void f();
+}
+
+interface J extends I {
+ void g();
+}
+
+public interface Test {
+ void h(I i);
+}
+
+class B implements Test {
+ @Override
+ public void h(I i) {
+ i.f();
+ }
+}
+
+class C extends B {
+ @Override
+ public void h(I i) {
+ i.f();
+ }
+}
+
+abstract class F implements Test {}
+
+class FF extends F {
+ @Override
+ public void h(I i) {
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t133/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t133/before/test.java
new file mode 100644
index 000000000000..5599c1a59b46
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t133/before/test.java
@@ -0,0 +1,33 @@
+interface I {
+ void f();
+}
+
+interface J extends I {
+ void g();
+}
+
+public interface Test {
+ void h(J i);
+}
+
+class B implements Test {
+ @Override
+ public void h(J i) {
+ i.f();
+ }
+}
+
+class C extends B {
+ @Override
+ public void h(J i) {
+ i.f();
+ }
+}
+
+abstract class F implements Test {}
+
+class FF extends F {
+ @Override
+ public void h(J i) {
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t134/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t134/after/Test.items
new file mode 100644
index 000000000000..2880fefdc224
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t134/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiLocalVariable:i : java.lang.String
+PsiParameter:a : java.lang.String
+PsiReferenceExpression:a : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t134/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t134/after/test.java
new file mode 100644
index 000000000000..26cb24f419d2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t134/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void buzz(final String a, final int b, final int c) {
+ String i = a + b + c;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t134/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t134/before/test.java
new file mode 100644
index 000000000000..7a7760404f36
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t134/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void buzz(final int a, final int b, final int c) {
+ int i = a + b + c;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t135/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t135/after/Test.items
new file mode 100644
index 000000000000..4e20b05def59
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t135/after/Test.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:bar : int
+PsiField:foo : int
+PsiParameter:bar : int
+PsiParameter:foo : int
+PsiReferenceExpression:bar : int
+PsiReferenceExpression:bar : int
+PsiReferenceExpression:foo : int
+PsiReferenceExpression:foo : int
+PsiReferenceExpression:this.bar : int
+PsiReferenceExpression:this.foo : int
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t135/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t135/after/test.java
new file mode 100644
index 000000000000..c992fd8569bf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t135/after/test.java
@@ -0,0 +1,19 @@
+class Test {
+ private int foo, bar;
+
+ public long getFoo() {
+ return foo;
+ }
+
+ public void setFoo(int foo) {
+ this.foo = foo;
+ }
+
+ public long getBar() {
+ return bar;
+ }
+
+ public void setBar(int bar) {
+ this.bar = bar;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t135/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t135/before/test.java
new file mode 100644
index 000000000000..756e9380835d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t135/before/test.java
@@ -0,0 +1,19 @@
+class Test {
+ private long foo, bar;
+
+ public long getFoo() {
+ return foo;
+ }
+
+ public void setFoo(long foo) {
+ this.foo = foo;
+ }
+
+ public long getBar() {
+ return bar;
+ }
+
+ public void setBar(long bar) {
+ this.bar = bar;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t136/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t136/after/Test.items
new file mode 100644
index 000000000000..617357a07275
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t136/after/Test.items
@@ -0,0 +1,17 @@
+Types:
+PsiLocalVariable:ints : java.util.ArrayList<java.lang.String>
+PsiMethodCallExpression:ints.add(i) : boolean
+PsiNewExpression:new ArrayList<Integer>() : java.util.ArrayList<java.lang.String>
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:i : java.lang.String
+PsiReferenceExpression:i : java.lang.String
+PsiReferenceExpression:ints : java.util.ArrayList<java.lang.String>
+PsiReferenceExpression:ints : java.util.ArrayList<java.lang.String>
+
+Conversions:
+i -> $
+ints.add(i) -> $
+
+New expression type changes:
+new ArrayList<Integer>() -> java.util.ArrayList<java.lang.String>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t136/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t136/after/test.java
new file mode 100644
index 000000000000..08185f4c079c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t136/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+ private void foo(String i) {
+ ArrayList<String> ints = new ArrayList<>();
+ ints.add(i);
+ Object j = constantaB == null ? ints : i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t136/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t136/before/test.java
new file mode 100644
index 000000000000..e66f3a5f5bfa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t136/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+ private void foo(Integer i) {
+ ArrayList<Integer> ints = new ArrayList<Integer>();
+ ints.add(i);
+ Object j = constantaB == null ? ints : i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t137/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t137/after/Test.items
new file mode 100644
index 000000000000..01da876f7e94
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t137/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:i : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+i[0]->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t137/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t137/after/test.java
new file mode 100644
index 000000000000..b2d59c1303dc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t137/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ private void foo(String i) {
+ int p = i[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t137/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t137/before/test.java
new file mode 100644
index 000000000000..832535bc9440
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t137/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ private void foo(int i) {
+ int p = i[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t138/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t138/after/Test.items
new file mode 100644
index 000000000000..176574ab1bc0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t138/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:set : java.util.Collection<java.lang.String>
+PsiReferenceExpression:set : java.util.Collection<java.lang.String>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t138/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t138/after/test.java
new file mode 100644
index 000000000000..141e122e2ccc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t138/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ Set<String> mySet = new HashSet();
+ void foo(Collection<String> set) {
+ mySet.retainAll(set);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t138/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t138/before/test.java
new file mode 100644
index 000000000000..28feb3c90d4a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t138/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ Set<String> mySet = new HashSet();
+ void foo(Set<String> set) {
+ mySet.retainAll(set);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t139/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t139/after/Test.items
new file mode 100644
index 000000000000..2fbe632fa578
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t139/after/Test.items
@@ -0,0 +1,7 @@
+Types:
+PsiParameter:s : java.lang.Integer
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t139/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t139/after/test.java
new file mode 100644
index 000000000000..d91661b68309
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t139/after/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+abstract class A implements Iterable<String> {}
+
+class Test {
+ void test(A it) {
+ for(Integer s : it) {
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t139/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t139/before/test.java
new file mode 100644
index 000000000000..f937525f52e2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t139/before/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+abstract class A implements Iterable<String> {}
+
+class Test {
+ void test(A it) {
+ for(String s : it) {
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t14/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t14/after/Test.items
new file mode 100644
index 000000000000..21635daebc66
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t14/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:f : A
+PsiMethodCallExpression:f.foo() : int
+PsiReferenceExpression:f : A
+
+Conversions:
+f.foo() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t14/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t14/after/test.java
new file mode 100644
index 000000000000..de034ae20adf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t14/after/test.java
@@ -0,0 +1,13 @@
+public class Test {
+ A f;
+ int bar(){
+ return f.foo();
+ }
+}
+class A {
+ int foo(){
+ return 0;
+ }
+}
+
+class B extends A{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t14/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t14/before/test.java
new file mode 100644
index 000000000000..8f6feeba681d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t14/before/test.java
@@ -0,0 +1,13 @@
+public class Test {
+ B f;
+ int bar(){
+ return f.foo();
+ }
+}
+class A {
+ int foo(){
+ return 0;
+ }
+}
+
+class B extends A{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t15/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t15/after/Test.items
new file mode 100644
index 000000000000..31ff4b94b421
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t15/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : A
+PsiMethodCallExpression:f.foo(f) : int
+PsiReferenceExpression:f : A
+PsiReferenceExpression:f : A
+
+Conversions:
+f.foo(f) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t15/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t15/after/test.java
new file mode 100644
index 000000000000..dcc5808448d5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t15/after/test.java
@@ -0,0 +1,16 @@
+public class Test {
+ A f;
+ int bar(){
+ return f.foo(f);
+ }
+}
+class A {
+ /**
+ * @param a
+ */
+ int foo(A a){
+ return 0;
+ }
+}
+
+class B extends A{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t15/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t15/before/test.java
new file mode 100644
index 000000000000..b22cc32ea85b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t15/before/test.java
@@ -0,0 +1,16 @@
+public class Test {
+ B f;
+ int bar(){
+ return f.foo(f);
+ }
+}
+class A {
+ /**
+ * @param a
+ */
+ int foo(A a){
+ return 0;
+ }
+}
+
+class B extends A{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t16/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t16/after/Test.items
new file mode 100644
index 000000000000..c0038308e560
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t16/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:f : B
+PsiMethodCallExpression:f.foo(f) : B
+PsiReferenceExpression:f : B
+PsiReferenceExpression:f : B
+
+Conversions:
+f -> $
+f.foo(f) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t16/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t16/after/test.java
new file mode 100644
index 000000000000..8c87396bcb3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t16/after/test.java
@@ -0,0 +1,15 @@
+class Test {
+ B f;
+
+ A bar() {
+ return f.foo(f);
+ }
+}
+class A {
+ <T> T foo(T t) {
+ return t;
+ }
+}
+
+class B extends A {
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t16/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t16/before/test.java
new file mode 100644
index 000000000000..c401bf03de20
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t16/before/test.java
@@ -0,0 +1,15 @@
+class Test {
+ A f;
+
+ A bar() {
+ return f.foo(f);
+ }
+}
+class A {
+ <T> T foo(T t) {
+ return t;
+ }
+}
+
+class B extends A {
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t17/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t17/after/Test.items
new file mode 100644
index 000000000000..aa0aa0551659
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t17/after/Test.items
@@ -0,0 +1,18 @@
+Types:
+PsiField:f : B
+PsiMethodCallExpression:f.foo(s) : B
+PsiMethodCallExpression:s.add(f) : boolean
+PsiParameter:s : java.util.Set<B>
+PsiReferenceExpression:f : B
+PsiReferenceExpression:f : B
+PsiReferenceExpression:s : java.util.Set<B>
+PsiReferenceExpression:s : java.util.Set<B>
+
+Conversions:
+f -> $
+f.foo(s) -> $
+s -> $
+s.add(f) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t17/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t17/after/test.java
new file mode 100644
index 000000000000..73530057f21b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t17/after/test.java
@@ -0,0 +1,17 @@
+import java.util.*;
+class Test {
+ B f;
+
+ A bar(Set<B> s) {
+ s.add(f);
+ return f.foo(s);
+ }
+}
+class A {
+ <T> T foo(Set<T> t) {
+ return null;
+ }
+}
+
+class B extends A {
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t17/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t17/before/test.java
new file mode 100644
index 000000000000..a425495c6065
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t17/before/test.java
@@ -0,0 +1,17 @@
+import java.util.*;
+class Test {
+ A f;
+
+ A bar(Set<A> s) {
+ s.add(f);
+ return f.foo(s);
+ }
+}
+class A {
+ <T> T foo(Set<T> t) {
+ return null;
+ }
+}
+
+class B extends A {
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t18/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t18/after/Test.items
new file mode 100644
index 000000000000..2f426a4bb9b0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t18/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : B
+PsiReferenceExpression:f : B
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t18/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t18/after/test.java
new file mode 100644
index 000000000000..35d9b61c1045
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t18/after/test.java
@@ -0,0 +1,11 @@
+import java.util.*;
+class Test {
+ B f;
+ void bar(Set<A> s) {
+ for (String s : f) {}
+ }
+}
+
+class A<Y> extends List<String> {}
+
+class B extends A<Integer> {} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t18/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t18/before/test.java
new file mode 100644
index 000000000000..3113a46d5dc6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t18/before/test.java
@@ -0,0 +1,11 @@
+import java.util.*;
+class Test {
+ A f;
+ void bar(Set<A> s) {
+ for (String s : f) {}
+ }
+}
+
+class A<Y> extends List<String> {}
+
+class B extends A<Integer> {} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t19/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t19/after/Test.items
new file mode 100644
index 000000000000..a2ec06ad3634
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t19/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.util.HashMap<java.lang.Integer,java.lang.Integer>
+PsiLocalVariable:s : java.util.Set<java.lang.Integer>
+PsiMethodCallExpression:f.keySet() : java.util.Set<java.lang.Integer>
+PsiReferenceExpression:f : java.util.HashMap<java.lang.Integer,java.lang.Integer>
+
+Conversions:
+f.keySet() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t19/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t19/after/test.java
new file mode 100644
index 000000000000..9609791bb138
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t19/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ HashMap<Integer, Integer> f;
+ void foo() {
+ Set<Integer> s = f.keySet();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t19/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t19/before/test.java
new file mode 100644
index 000000000000..815f0ed1ab3a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t19/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ Map<String, String> f;
+ void foo() {
+ Set<String> s = f.keySet();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t20/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t20/after/Test.items
new file mode 100644
index 000000000000..c97038d663ce
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t20/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.util.Map<java.lang.String,java.lang.String>
+PsiLocalVariable:s : java.util.Set<java.lang.String>
+PsiMethodCallExpression:f.keySet() : java.util.Set<java.lang.String>
+PsiReferenceExpression:f : java.util.Map<java.lang.String,java.lang.String>
+
+Conversions:
+f.keySet() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t20/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t20/after/test.java
new file mode 100644
index 000000000000..815f0ed1ab3a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t20/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ Map<String, String> f;
+ void foo() {
+ Set<String> s = f.keySet();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t20/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t20/before/test.java
new file mode 100644
index 000000000000..9609791bb138
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t20/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ HashMap<Integer, Integer> f;
+ void foo() {
+ Set<Integer> s = f.keySet();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t21/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t21/after/Test.items
new file mode 100644
index 000000000000..53630275ac1c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t21/after/Test.items
@@ -0,0 +1,14 @@
+Types:
+PsiField:f : java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
+PsiLocalVariable:stringList : java.util.Set<java.lang.String>
+PsiMethodCallExpression:f.get(s) : java.util.Set<java.lang.String>
+PsiMethodCallExpression:stringList.add(s) : boolean
+PsiReferenceExpression:f : java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
+PsiReferenceExpression:stringList : java.util.Set<java.lang.String>
+
+Conversions:
+f.get(s) -> $
+stringList.add(s) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t21/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t21/after/test.java
new file mode 100644
index 000000000000..34e758cb64d6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t21/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+ Map<String, Set<String>> f;
+ void foo(String s) {
+ Set<String> stringList = f.get(s);
+ stringList.add(s);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t21/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t21/before/test.java
new file mode 100644
index 000000000000..1f647aff2488
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t21/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+class Test {
+ Map<String, List<String>> f;
+ void foo(String s) {
+ List<String> stringList = f.get(s);
+ stringList.add(s);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t22/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t22/after/Test.items
new file mode 100644
index 000000000000..e8b61ea780ac
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t22/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:f : java.lang.Integer
+PsiParameter:s : java.lang.Integer
+PsiReferenceExpression:f : java.lang.Integer
+
+Conversions:
+f -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t22/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t22/after/test.java
new file mode 100644
index 000000000000..affc2b3da86f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t22/after/test.java
@@ -0,0 +1,8 @@
+class Test {
+ Integer f;
+ void foo(Integer s) {}
+
+ void bar() {
+ foo(f);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t22/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t22/before/test.java
new file mode 100644
index 000000000000..24b0b43cb5a2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t22/before/test.java
@@ -0,0 +1,8 @@
+class Test {
+ String f;
+ void foo(String... s) {}
+
+ void bar() {
+ foo(f);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t23/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t23/after/Test.items
new file mode 100644
index 000000000000..99507129472e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t23/after/Test.items
@@ -0,0 +1,22 @@
+Types:
+PsiField:f : HashMap<java.lang.String,java.util.List<java.lang.String>>
+PsiLocalVariable:set : java.util.List<java.lang.String>
+PsiMethodCallExpression:f.get(s) : java.util.List<java.lang.String>
+PsiMethodCallExpression:f.put(s, set) : java.util.List<java.lang.String>
+PsiMethodCallExpression:set.add(s1) : boolean
+PsiReferenceExpression:f : HashMap<java.lang.String,java.util.List<java.lang.String>>
+PsiReferenceExpression:f : HashMap<java.lang.String,java.util.List<java.lang.String>>
+PsiReferenceExpression:set : java.util.List<java.lang.String>
+PsiReferenceExpression:set : java.util.List<java.lang.String>
+PsiReferenceExpression:set : java.util.List<java.lang.String>
+PsiReferenceExpression:set : java.util.List<java.lang.String>
+
+Conversions:
+f.get(s) -> $
+f.put(s, set) -> $
+set -> $
+set.add(s1) -> $
+
+New expression type changes:
+Fails:
+new HashSet<String>()->java.util.List<java.lang.String>
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t23/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t23/after/test.java
new file mode 100644
index 000000000000..df9ad40dc0e9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t23/after/test.java
@@ -0,0 +1,15 @@
+import java.util.*;
+class Test {
+ HashMap<String, List<String>> f;
+
+ void foo(String s, String s1) {
+ List<String> set = f.get(s);
+ if (set == null) {
+ set = new HashSet<String>();
+ f.put(s, set);
+ }
+ set.add(s1);
+ }
+}
+
+class HashMap<K, V> extends java.util.HashMap<K, V>{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t23/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t23/before/test.java
new file mode 100644
index 000000000000..a99eafcc46dc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t23/before/test.java
@@ -0,0 +1,15 @@
+import java.util.*;
+class Test {
+ HashMap<String, Set<String>> f;
+
+ void foo(String s, String s1) {
+ Set<String> set = f.get(s);
+ if (set == null) {
+ set = new HashSet<String>();
+ f.put(s, set);
+ }
+ set.add(s1);
+ }
+}
+
+class HashMap<K, V> extends java.util.HashMap<K, V>{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t24/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t24/after/Test.items
new file mode 100644
index 000000000000..21962d201ce2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t24/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : D
+PsiReferenceExpression:f : D
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t24/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t24/after/test.java
new file mode 100644
index 000000000000..6e0abdb55348
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t24/after/test.java
@@ -0,0 +1,14 @@
+public class Test {
+ D f;
+ C foo() {
+ return null;
+ }
+}
+class B extends Test {
+ C foo() {
+ return f;
+ }
+}
+
+class C {}
+class D extends C{}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t24/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t24/before/test.java
new file mode 100644
index 000000000000..536dfc3ebd30
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t24/before/test.java
@@ -0,0 +1,14 @@
+public class Test {
+ C f;
+ C foo() {
+ return null;
+ }
+}
+class B extends Test {
+ C foo() {
+ return f;
+ }
+}
+
+class C {}
+class D extends C{}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t25/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t25/after/Test.items
new file mode 100644
index 000000000000..21962d201ce2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t25/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : D
+PsiReferenceExpression:f : D
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t25/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t25/after/test.java
new file mode 100644
index 000000000000..b06e456332d8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t25/after/test.java
@@ -0,0 +1,15 @@
+public class Test {
+ D f;
+ C foo() {
+ return f;
+ }
+}
+
+class B extends Test {
+ C foo() {
+ return null;
+ }
+}
+
+class C {}
+class D extends C{}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t25/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t25/before/test.java
new file mode 100644
index 000000000000..2994877fade8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t25/before/test.java
@@ -0,0 +1,15 @@
+public class Test {
+ C f;
+ C foo() {
+ return f;
+ }
+}
+
+class B extends Test {
+ C foo() {
+ return null;
+ }
+}
+
+class C {}
+class D extends C{}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t26/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t26/after/Test.items
new file mode 100644
index 000000000000..eae7ba330dd9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t26/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : D
+PsiParameter:c : D
+PsiParameter:c : D
+PsiReferenceExpression:c : D
+PsiReferenceExpression:f : D
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t26/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t26/after/test.java
new file mode 100644
index 000000000000..ee47caa11464
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t26/after/test.java
@@ -0,0 +1,15 @@
+class Test {
+ D f;
+ void foo(D c) {
+ f = c;
+ }
+}
+
+class B extends Test {
+ void foo(D c) {
+
+ }
+}
+
+class C {}
+class D extends C{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t26/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t26/before/test.java
new file mode 100644
index 000000000000..581f5fa3bc83
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t26/before/test.java
@@ -0,0 +1,15 @@
+class Test {
+ C f;
+ void foo(C c) {
+ f = c;
+ }
+}
+
+class B extends Test {
+ void foo(C c) {
+
+ }
+}
+
+class C {}
+class D extends C{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t27/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t27/after/Test.items
new file mode 100644
index 000000000000..eae7ba330dd9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t27/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : D
+PsiParameter:c : D
+PsiParameter:c : D
+PsiReferenceExpression:c : D
+PsiReferenceExpression:f : D
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t27/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t27/after/test.java
new file mode 100644
index 000000000000..5eb0cb2d97b9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t27/after/test.java
@@ -0,0 +1,13 @@
+class Test {
+ D f;
+ void foo(D c) {}
+}
+
+class B extends Test {
+ void foo(D c) {
+ f = c;
+ }
+}
+
+class C {}
+class D extends C{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t27/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t27/before/test.java
new file mode 100644
index 000000000000..a18da122856d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t27/before/test.java
@@ -0,0 +1,13 @@
+class Test {
+ C f;
+ void foo(C c) {}
+}
+
+class B extends Test {
+ void foo(C c) {
+ f = c;
+ }
+}
+
+class C {}
+class D extends C{} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t28/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t28/after/Test.items
new file mode 100644
index 000000000000..80d6c0c3bf37
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t28/after/Test.items
@@ -0,0 +1,13 @@
+Types:
+PsiField:f : java.lang.String[]
+PsiMethodCallExpression:f.size() : int
+PsiMethodCallExpression:f.toArray(new String[f.size()]) : java.lang.String[]
+PsiReferenceExpression:f : java.lang.String[]
+PsiReferenceExpression:f : java.lang.String[]
+
+Conversions:
+f.size() -> $qualifier$.length $qualifier$.size()
+f.toArray(new String[f.size()]) -> $qualifier$ $qualifier$.toArray($expr$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t28/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t28/after/test.java
new file mode 100644
index 000000000000..0b1e27daa0ee
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t28/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ String[] f;
+ String[] get() {
+ return f;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t28/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t28/before/test.java
new file mode 100644
index 000000000000..43c040a3baf4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t28/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<String> f;
+ String[] get() {
+ return f.toArray(new String[f.size()]);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t29/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t29/after/Test.items
new file mode 100644
index 000000000000..5b040a6aaa19
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t29/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiMethod:get : java.util.List<java.lang.String>
+
+Conversions:
+f.toArray(new String[f.size()]) -> $qualifier$ $qualifier$.toArray($expr$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t29/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t29/after/test.java
new file mode 100644
index 000000000000..23a1f11f461e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t29/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<String> f;
+ List<String> get() {
+ return f;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t29/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t29/before/test.java
new file mode 100644
index 000000000000..43c040a3baf4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t29/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<String> f;
+ String[] get() {
+ return f.toArray(new String[f.size()]);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t30/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t30/after/Test.items
new file mode 100644
index 000000000000..cfd748933e5d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t30/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:f : java.lang.String[]
+PsiMethodCallExpression:f.size() : int
+PsiReferenceExpression:f : java.lang.String[]
+
+Conversions:
+f.size() -> $qualifier$.length $qualifier$.size()
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t30/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t30/after/test.java
new file mode 100644
index 000000000000..28f71fc98c82
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t30/after/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+class Test {
+ String[] f;
+ void foo() {
+ for (int i = 0; i < f.length; i++) {
+
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t30/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t30/before/test.java
new file mode 100644
index 000000000000..5317e2164e7b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t30/before/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+class Test {
+ List<String> f;
+ void foo() {
+ for (int i = 0; i < f.size(); i++) {
+
+ }
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t31/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t31/after/Test.items
new file mode 100644
index 000000000000..7459a22f27d0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t31/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.lang.Object
+PsiReferenceExpression:f : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
+f->java.lang.Object
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t31/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t31/after/test.java
new file mode 100644
index 000000000000..ec7fb8e9807d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t31/after/test.java
@@ -0,0 +1,8 @@
+class Test {
+ Object f;
+ void foo(){}
+
+ void bar() {
+ f.foo();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t31/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t31/before/test.java
new file mode 100644
index 000000000000..b8c08fdfd786
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t31/before/test.java
@@ -0,0 +1,8 @@
+class Test {
+ Test f;
+ void foo(){}
+
+ void bar() {
+ f.foo();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t32/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t32/after/Test.items
new file mode 100644
index 000000000000..5638ea15f4a6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t32/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:i : int
+
+Conversions:
+#bar(long) -> PsiMethod:bar
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t32/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t32/after/test.java
new file mode 100644
index 000000000000..27e7eeb25258
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t32/after/test.java
@@ -0,0 +1,7 @@
+/**
+* {@link #bar(int)}
+*/
+class Test {
+
+ void bar(int i) {}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t32/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t32/before/test.java
new file mode 100644
index 000000000000..a98179d5054c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t32/before/test.java
@@ -0,0 +1,7 @@
+/**
+* {@link #bar(long)}
+*/
+class Test {
+
+ void bar(long i) {}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t33/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t33/after/Test.items
new file mode 100644
index 000000000000..df8f4d2c09d4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t33/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:l : java.util.List<java.lang.Integer>
+PsiNewExpression:new ArrayList<String>() : java.util.ArrayList<java.lang.Integer>
+PsiReferenceExpression:l : java.util.List<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+new ArrayList<String>() -> java.util.ArrayList<java.lang.Integer>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t33/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t33/after/test.java
new file mode 100644
index 000000000000..126292ad9322
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t33/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<Integer> l;
+ void foo() {
+ l = new ArrayList<>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t33/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t33/before/test.java
new file mode 100644
index 000000000000..f604f9185e2d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t33/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<String> l;
+ void foo() {
+ l = new ArrayList<String>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t34/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t34/after/Test.items
new file mode 100644
index 000000000000..d9f0bafc62d7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t34/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:l : java.util.AbstractList<java.lang.String>
+PsiNewExpression:new ArrayList<String>() : java.util.ArrayList<java.lang.String>
+PsiReferenceExpression:l : java.util.AbstractList<java.lang.String>
+
+Conversions:
+
+New expression type changes:
+new ArrayList<String>() -> java.util.ArrayList<java.lang.String>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t34/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t34/after/test.java
new file mode 100644
index 000000000000..954f507013c6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t34/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ AbstractList<String> l;
+ void foo() {
+ l = new ArrayList<>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t34/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t34/before/test.java
new file mode 100644
index 000000000000..f604f9185e2d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t34/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List<String> l;
+ void foo() {
+ l = new ArrayList<String>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t35/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t35/after/Test.items
new file mode 100644
index 000000000000..2b28dc8c0984
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t35/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:myParent : TestImpl
+PsiParameter:parent : TestImpl
+PsiParameter:parent : TestImpl
+PsiReferenceExpression:myParent : TestImpl
+PsiReferenceExpression:parent : TestImpl
+PsiReferenceExpression:parent : TestImpl
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t35/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t35/after/test.java
new file mode 100644
index 000000000000..b575a53519c4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t35/after/test.java
@@ -0,0 +1,13 @@
+class Test {
+ TestImpl myParent;
+
+ public Test(TestImpl parent) {
+ myParent = parent;
+ }
+
+ class TestImpl extends Test {
+ public TestImpl(TestImpl parent) {
+ super(parent);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t35/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t35/before/test.java
new file mode 100644
index 000000000000..83f66b0bea7c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t35/before/test.java
@@ -0,0 +1,13 @@
+class Test {
+ Test myParent;
+
+ public Test(Test parent) {
+ myParent = parent;
+ }
+
+ class TestImpl extends Test {
+ public TestImpl(Test parent) {
+ super(parent);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t36/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t36/after/Test.items
new file mode 100644
index 000000000000..521251a0dd37
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t36/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:i : byte
+PsiReferenceExpression:i : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t36/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t36/after/test.java
new file mode 100644
index 000000000000..8fd62fdc775d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t36/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void foo(byte i) {
+ long j = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t36/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t36/before/test.java
new file mode 100644
index 000000000000..1cbff3a1272c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t36/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void foo(int i) {
+ long j = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t37/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t37/after/Test.items
new file mode 100644
index 000000000000..26c064a26ffa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t37/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiParameter:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t37/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t37/after/test.java
new file mode 100644
index 000000000000..032dc398e040
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t37/after/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(int i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t37/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t37/before/test.java
new file mode 100644
index 000000000000..2cc80bd340ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t37/before/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(short i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t38/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t38/after/Test.items
new file mode 100644
index 000000000000..ce5df8ea5fcb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t38/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiParameter:i : long
+PsiReferenceExpression:i : long
+PsiReferenceExpression:i : long
+PsiReferenceExpression:i : long
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t38/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t38/after/test.java
new file mode 100644
index 000000000000..7ef08a9041c0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t38/after/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(long i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t38/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t38/before/test.java
new file mode 100644
index 000000000000..7ef08a9041c0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t38/before/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(long i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t39/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t39/after/Test.items
new file mode 100644
index 000000000000..3c746805c0f1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t39/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiParameter:i : byte
+PsiReferenceExpression:i : byte
+PsiReferenceExpression:i : byte
+PsiReferenceExpression:i : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t39/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t39/after/test.java
new file mode 100644
index 000000000000..0b59f99cc084
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t39/after/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(byte i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t39/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t39/before/test.java
new file mode 100644
index 000000000000..7ef08a9041c0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t39/before/test.java
@@ -0,0 +1,7 @@
+class Test {
+ void foo(long i) {
+ int i1 = i + 1;
+ int i2 = i - 1;
+ int i3 = i >> 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t40/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t40/after/Test.items
new file mode 100644
index 000000000000..2aff3bd8c623
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t40/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:l : java.util.ArrayList
+PsiReferenceExpression:l : java.util.ArrayList
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t40/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t40/after/test.java
new file mode 100644
index 000000000000..83cae108fdd9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t40/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ ArrayList l;
+ void foo() {
+ l = new ArrayList();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t40/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t40/before/test.java
new file mode 100644
index 000000000000..dd72766db414
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t40/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List l;
+ void foo() {
+ l = new ArrayList();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t41/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t41/after/Test.items
new file mode 100644
index 000000000000..583812d7778b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t41/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:l : java.util.ArrayList
+PsiNewExpression:new ArrayList<String>() : java.util.ArrayList<java.lang.String>
+PsiReferenceExpression:l : java.util.ArrayList
+
+Conversions:
+
+New expression type changes:
+new ArrayList<String>() -> java.util.ArrayList<java.lang.String>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t41/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t41/after/test.java
new file mode 100644
index 000000000000..3ac0475a9e96
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t41/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ ArrayList l;
+ void foo() {
+ l = new ArrayList<String>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t41/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t41/before/test.java
new file mode 100644
index 000000000000..8b8b5018717b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t41/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List l;
+ void foo() {
+ l = new ArrayList<String>();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t42/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t42/after/Test.items
new file mode 100644
index 000000000000..d1417fa9ad32
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t42/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:l : java.util.ArrayList<java.lang.String>
+PsiNewExpression:new ArrayList() : java.util.ArrayList
+PsiReferenceExpression:l : java.util.ArrayList<java.lang.String>
+
+Conversions:
+
+New expression type changes:
+new ArrayList() -> java.util.ArrayList
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t42/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t42/after/test.java
new file mode 100644
index 000000000000..0dd8c405b1d9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t42/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ ArrayList<String> l;
+ void foo() {
+ l = new ArrayList();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t42/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t42/before/test.java
new file mode 100644
index 000000000000..dd72766db414
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t42/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+class Test {
+ List l;
+ void foo() {
+ l = new ArrayList();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t43/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t43/after/Test.items
new file mode 100644
index 000000000000..b1e94aa2143b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t43/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:o : java.lang.Long
+
+Conversions:
+l -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t43/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t43/after/test.java
new file mode 100644
index 000000000000..c386bc247acd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t43/after/test.java
@@ -0,0 +1,4 @@
+class Test {
+ long l;
+ Long o = l;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t43/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t43/before/test.java
new file mode 100644
index 000000000000..d7e1595d92bb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t43/before/test.java
@@ -0,0 +1,4 @@
+class Test {
+ long l;
+ Object o = l;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t44/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t44/after/Test.items
new file mode 100644
index 000000000000..3cae6713c3b0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t44/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:i : byte
+PsiReferenceExpression:i : byte
+
+Conversions:
+l -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t44/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t44/after/test.java
new file mode 100644
index 000000000000..60a560399b71
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t44/after/test.java
@@ -0,0 +1,7 @@
+class Test {
+ long l;
+ byte i;
+ void foo() {
+ l = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t44/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t44/before/test.java
new file mode 100644
index 000000000000..4dee20b44e33
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t44/before/test.java
@@ -0,0 +1,7 @@
+class Test {
+ long l;
+ int i;
+ void foo() {
+ l = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t45/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t45/after/Test.items
new file mode 100644
index 000000000000..c97169454693
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t45/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:i : byte
+PsiField:l : byte
+PsiReferenceExpression:i : byte
+PsiReferenceExpression:l : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t45/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t45/after/test.java
new file mode 100644
index 000000000000..45fcb1f6eb1f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t45/after/test.java
@@ -0,0 +1,7 @@
+class Test {
+ byte l;
+ byte i;
+ void foo() {
+ l = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t45/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t45/before/test.java
new file mode 100644
index 000000000000..4dee20b44e33
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t45/before/test.java
@@ -0,0 +1,7 @@
+class Test {
+ long l;
+ int i;
+ void foo() {
+ l = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t46/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t46/after/Test.items
new file mode 100644
index 000000000000..934d4a09ec3b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t46/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:j : int
+
+Conversions:
+i -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t46/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t46/after/test.java
new file mode 100644
index 000000000000..f77f19689836
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t46/after/test.java
@@ -0,0 +1,4 @@
+class Test {
+ byte i;
+ int j = i;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t46/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t46/before/test.java
new file mode 100644
index 000000000000..5256726fdd95
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t46/before/test.java
@@ -0,0 +1,4 @@
+class Test {
+ byte i;
+ long j = i;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t47/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t47/after/Test.items
new file mode 100644
index 000000000000..d39a160ee9a7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t47/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:o : int
+
+Conversions:
+
+New expression type changes:
+Fails:
+null->int
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t47/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t47/after/test.java
new file mode 100644
index 000000000000..99f4d773fd24
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t47/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ int o = null;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t47/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t47/before/test.java
new file mode 100644
index 000000000000..308305e1cb41
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t47/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Object o = null;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t48/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t48/after/Test.items
new file mode 100644
index 000000000000..fedb3311ad6b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t48/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiLocalVariable:set : java.util.Set<B>
+PsiParameter:s : java.util.AbstractSet<B>
+PsiReferenceExpression:s : java.util.AbstractSet<B>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t48/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t48/after/test.java
new file mode 100644
index 000000000000..60e1a9ddd8c7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t48/after/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+class Test {
+ void foo(AbstractSet<B> s) {
+ Set<B> set = s;
+ }
+
+ class A {}
+ class B extends A{}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t48/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t48/before/test.java
new file mode 100644
index 000000000000..e859716610c8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t48/before/test.java
@@ -0,0 +1,9 @@
+import java.util.*;
+class Test {
+ void foo(AbstractSet<A> s) {
+ Set<A> set = s;
+ }
+
+ class A {}
+ class B extends A{}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t49/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t49/after/Test.items
new file mode 100644
index 000000000000..b65d6bce02d1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t49/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:f : java.util.Set<B>
+PsiParameter:s : java.util.AbstractSet<B>
+PsiReferenceExpression:f : java.util.Set<B>
+PsiReferenceExpression:s : java.util.AbstractSet<B>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t49/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t49/after/test.java
new file mode 100644
index 000000000000..91c41afa26e2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t49/after/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+ Set<B> f;
+ void foo(AbstractSet<B> s) {
+ f = s;
+ }
+
+ class A {}
+ class B extends A{}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t49/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t49/before/test.java
new file mode 100644
index 000000000000..8a2a9a9054ce
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t49/before/test.java
@@ -0,0 +1,10 @@
+import java.util.*;
+class Test {
+ Set<A> f;
+ void foo(AbstractSet<A> s) {
+ f = s;
+ }
+
+ class A {}
+ class B extends A{}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t50/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t50/after/Test.items
new file mode 100644
index 000000000000..895bdd4d4118
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t50/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:c : java.util.Set<? extends JButton>
+PsiField:c1 : java.util.Set<? extends JButton>
+PsiReferenceExpression:c : java.util.Set<? extends JButton>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t50/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t50/after/test.java
new file mode 100644
index 000000000000..50d5fb0229ca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t50/after/test.java
@@ -0,0 +1,5 @@
+import java.util.*;
+class Test {
+ Set<? extends JButton> c;
+ Set<? extends JButton> c1 = c;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t50/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t50/before/test.java
new file mode 100644
index 000000000000..05b20ee8b1fe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t50/before/test.java
@@ -0,0 +1,5 @@
+import java.util.*;
+class Test {
+ Set<? extends JComponent> c;
+ Set<? extends JComponent> c1 = c;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t51/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t51/after/Test.items
new file mode 100644
index 000000000000..81f430c2e8ab
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t51/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:f : java.lang.Object[]
+PsiNewExpression:new String[] {"a"} : java.lang.Object[]
+
+Conversions:
+"a" -> $
+
+New expression type changes:
+new String[] {"a"} -> java.lang.Object[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t51/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t51/after/test.java
new file mode 100644
index 000000000000..bbd211f73928
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t51/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Object[] f = new Object[] {"a"};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t51/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t51/before/test.java
new file mode 100644
index 000000000000..7a9a090c342f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t51/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ String[] f = new String[] {"a"};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t52/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t52/after/Test.items
new file mode 100644
index 000000000000..fae3f5aa0b83
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t52/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.lang.Object[]
+PsiNewExpression:new Set() : java.util.Set
+PsiNewExpression:new Set[] { new Set() } : java.lang.Object[]
+
+Conversions:
+
+New expression type changes:
+new Set() -> java.util.Set
+new Set[] { new Set() } -> java.lang.Object[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t52/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t52/after/test.java
new file mode 100644
index 000000000000..034f9e2a7285
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t52/after/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Object[] f = new Object[] { new Set() };
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t52/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t52/before/test.java
new file mode 100644
index 000000000000..abf3b7a12aff
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t52/before/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set[] f = new Set[] { new Set() };
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t53/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t53/after/Test.items
new file mode 100644
index 000000000000..6f10a470aef3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t53/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : java.util.Set<java.lang.String>[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+new double[0]->java.util.Set<java.lang.String>[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t53/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t53/after/test.java
new file mode 100644
index 000000000000..52d1899803c8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t53/after/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set<String>[] f = new double[0];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t53/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t53/before/test.java
new file mode 100644
index 000000000000..50be5aada106
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t53/before/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ double[] f = new double[0];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t54/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t54/after/Test.items
new file mode 100644
index 000000000000..584021476055
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t54/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.Set<? extends java.lang.Integer>
+PsiNewExpression:new Set<Object>() : java.util.Set<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+new Set<Object>() -> java.util.Set<java.lang.Integer>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t54/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t54/after/test.java
new file mode 100644
index 000000000000..11cbc3fe7520
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t54/after/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set<? extends Integer> f = new Set<>();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t54/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t54/before/test.java
new file mode 100644
index 000000000000..96573db084dd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t54/before/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set<Object> f = new Set<Object>();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t55/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t55/after/Test.items
new file mode 100644
index 000000000000..465e20e4a213
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t55/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.Set<?>
+PsiNewExpression:new Set<Object>() : java.util.Set<java.lang.Object>
+
+Conversions:
+
+New expression type changes:
+new Set<Object>() -> java.util.Set<java.lang.Object>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t55/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t55/after/test.java
new file mode 100644
index 000000000000..c895ff398fa6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t55/after/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set<?> f = new Set<>();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t55/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t55/before/test.java
new file mode 100644
index 000000000000..96573db084dd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t55/before/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+class Test {
+ Set<Object> f = new Set<Object>();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t56/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t56/after/Test.items
new file mode 100644
index 000000000000..05ed851f0ce0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t56/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiParameter:i : double
+PsiReferenceExpression:i : double
+PsiReferenceExpression:i : double
+
+Conversions:
+
+New expression type changes:
+Fails:
+i->double
+i->double
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t56/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t56/after/test.java
new file mode 100644
index 000000000000..2f5cc73acbbb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t56/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ void foo(double i) {
+ int[] a = new int[i];
+ System.out.println(a[i]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t56/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t56/before/test.java
new file mode 100644
index 000000000000..0f9888806c18
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t56/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ void foo(int i) {
+ int[] a = new int[i];
+ System.out.println(a[i]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t57/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t57/after/Test.items
new file mode 100644
index 000000000000..af2ecf9c114e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t57/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:i : byte
+PsiReferenceExpression:i : byte
+PsiReferenceExpression:i : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t57/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t57/after/test.java
new file mode 100644
index 000000000000..ce9df2fbb45d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t57/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ void foo(byte i) {
+ int[] a = new int[i];
+ System.out.println(a[i]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t57/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t57/before/test.java
new file mode 100644
index 000000000000..0f9888806c18
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t57/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ void foo(int i) {
+ int[] a = new int[i];
+ System.out.println(a[i]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t58/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t58/after/Test.items
new file mode 100644
index 000000000000..19b07a44c139
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t58/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : java.lang.Object
+
+Conversions:
+new String[1] -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t58/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t58/after/test.java
new file mode 100644
index 000000000000..ff4055ac3129
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t58/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Object f = new String[1];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t58/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t58/before/test.java
new file mode 100644
index 000000000000..8df4d62d721a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t58/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ String[] f = new String[1];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t59/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t59/after/Test.items
new file mode 100644
index 000000000000..ea0dda8061b2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t59/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : java.lang.Cloneable
+
+Conversions:
+new String[1] -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t59/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t59/after/test.java
new file mode 100644
index 000000000000..78a09afee42b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t59/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Cloneable f = new String[1];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t59/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t59/before/test.java
new file mode 100644
index 000000000000..8df4d62d721a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t59/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ String[] f = new String[1];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t60/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t60/after/Test.items
new file mode 100644
index 000000000000..88822343977c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t60/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:p : java.lang.Object
+PsiReferenceExpression:p : java.lang.Object
+
+Conversions:
+i -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t60/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t60/after/test.java
new file mode 100644
index 000000000000..9ab940eaf425
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t60/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ Object p;
+ void foo(int... i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t60/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t60/before/test.java
new file mode 100644
index 000000000000..26172c13d2e7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t60/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ int[] p;
+ void foo(int... i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t61/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t61/after/Test.items
new file mode 100644
index 000000000000..830074d65d6b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t61/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiLocalVariable:p : int[]
+PsiParameter:i : int...
+PsiReferenceExpression:i : int[]
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t61/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t61/after/test.java
new file mode 100644
index 000000000000..1b05fce5b5b9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t61/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void foo(int... i) {
+ int[] p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t61/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t61/before/test.java
new file mode 100644
index 000000000000..e9f49f1c3846
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t61/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void foo(int i) {
+ int p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t62/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t62/after/Test.items
new file mode 100644
index 000000000000..88822343977c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t62/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:p : java.lang.Object
+PsiReferenceExpression:p : java.lang.Object
+
+Conversions:
+i -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t62/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t62/after/test.java
new file mode 100644
index 000000000000..9ab940eaf425
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t62/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ Object p;
+ void foo(int... i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t62/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t62/before/test.java
new file mode 100644
index 000000000000..26172c13d2e7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t62/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ int[] p;
+ void foo(int... i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t63/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t63/after/Test.items
new file mode 100644
index 000000000000..69dcdaf945c5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t63/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:p : double[]
+PsiParameter:i : double[]
+PsiReferenceExpression:i : double[]
+PsiReferenceExpression:p : double[]
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t63/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t63/after/test.java
new file mode 100644
index 000000000000..9602f0b3d59f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t63/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ double[] p;
+ void foo(double[] i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t63/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t63/before/test.java
new file mode 100644
index 000000000000..26172c13d2e7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t63/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ int[] p;
+ void foo(int... i) {
+ p = i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t64/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t64/after/Test.items
new file mode 100644
index 000000000000..8ae72a21d857
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t64/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiLocalVariable:p : int
+PsiParameter:i : int
+PsiReferenceExpression:i : int
+
+Conversions:
+
+New expression type changes:
+Fails:
+foo(1, 2)->int
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t64/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t64/after/test.java
new file mode 100644
index 000000000000..29f4004383eb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t64/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(int i) {
+ int p = i;
+ }
+
+ void bar() {
+ foo(1, 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t64/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t64/before/test.java
new file mode 100644
index 000000000000..5583e3c06a5d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t64/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(int... i) {
+ int[] p = i;
+ }
+
+ void bar() {
+ foo(1, 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t65/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t65/after/Test.items
new file mode 100644
index 000000000000..a1201587163f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t65/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiLocalVariable:p : java.lang.String
+PsiParameter:i : java.lang.String
+PsiReferenceExpression:i : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+1->java.lang.String
+2->java.lang.String
+foo(1, 2)->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t65/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t65/after/test.java
new file mode 100644
index 000000000000..3532ce557f8c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t65/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(String i) {
+ String p = i;
+ }
+
+ void bar() {
+ foo(1, 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t65/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t65/before/test.java
new file mode 100644
index 000000000000..5583e3c06a5d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t65/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(int... i) {
+ int[] p = i;
+ }
+
+ void bar() {
+ foo(1, 2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t66/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t66/after/Test.items
new file mode 100644
index 000000000000..f8bf3a92ff7d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t66/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiLocalVariable:p : int
+PsiParameter:i : int
+PsiReferenceExpression:i : int
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t66/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t66/after/test.java
new file mode 100644
index 000000000000..56608039cf5e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t66/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(int i) {
+ int p = i;
+ }
+
+ void bar() {
+ foo(1);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t66/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t66/before/test.java
new file mode 100644
index 000000000000..45ea51dddf11
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t66/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ void foo(int... i) {
+ int[] p = i;
+ }
+
+ void bar() {
+ foo(1);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t67/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t67/after/Test.items
new file mode 100644
index 000000000000..0e5e72eb6f30
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t67/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:myForAccess : java.lang.String
+PsiMethod:forAccess : java.lang.String
+PsiMethodCallExpression:this.forAccess() : java.lang.String
+PsiParameter:p : java.lang.String
+PsiReferenceExpression:myForAccess : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t67/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t67/after/test.java
new file mode 100644
index 000000000000..8a4fda4a0fac
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t67/after/test.java
@@ -0,0 +1,9 @@
+class Test {
+ private String myForAccess;
+ private String forAccess() {
+ return myForAccess;
+ }
+ public void methMemAcc(String p) {
+ p = this.forAccess();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t67/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t67/before/test.java
new file mode 100644
index 000000000000..57a1c5db091b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t67/before/test.java
@@ -0,0 +1,9 @@
+class Test {
+ private Object myForAccess;
+ private Object forAccess() {
+ return myForAccess;
+ }
+ public void methMemAcc(Object p) {
+ p = this.forAccess();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t68/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t68/after/Test.items
new file mode 100644
index 000000000000..e31709e870fb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t68/after/Test.items
@@ -0,0 +1,17 @@
+Types:
+PsiArrayInitializerExpression:{p} : double[]
+PsiArrayInitializerExpression:{p} : double[]
+PsiArrayInitializerExpression:{{p},{p}} : double[][]
+PsiLocalVariable:a : double[][]
+PsiNewExpression:new int[][]{{p},{p}} : double[][]
+PsiParameter:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+
+Conversions:
+p -> $
+p -> $
+
+New expression type changes:
+new int[][]{{p},{p}} -> double[][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t68/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t68/after/test.java
new file mode 100644
index 000000000000..f9d9a9257c5d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t68/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void foo(double p) {
+ double[][] a = new double[][]{{p},{p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t68/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t68/before/test.java
new file mode 100644
index 000000000000..9f84d15cc993
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t68/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void foo(int p) {
+ int[][] a = new int[][]{{p},{p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t69/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t69/after/Test.items
new file mode 100644
index 000000000000..6471629f221e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t69/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : byte
+PsiReferenceExpression:p : byte
+PsiReferenceExpression:p : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t69/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t69/after/test.java
new file mode 100644
index 000000000000..bba00df7f5ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t69/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void foo(byte p) {
+ int[][] a = new int[][]{{p},{p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t69/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t69/before/test.java
new file mode 100644
index 000000000000..9f84d15cc993
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t69/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void foo(int p) {
+ int[][] a = new int[][]{{p},{p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t70/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t70/after/Test.items
new file mode 100644
index 000000000000..9811dea4870e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t70/after/Test.items
@@ -0,0 +1,18 @@
+Types:
+PsiArrayInitializerExpression:{p} : float[]
+PsiArrayInitializerExpression:{p} : float[]
+PsiArrayInitializerExpression:{{p}, {p}} : float[][]
+PsiField:a : float[][]
+PsiNewExpression:new int[][]{{p}, {p}} : float[][]
+PsiParameter:p : float
+PsiReferenceExpression:a : float[][]
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+
+Conversions:
+p -> $
+p -> $
+
+New expression type changes:
+new int[][]{{p}, {p}} -> float[][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t70/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t70/after/test.java
new file mode 100644
index 000000000000..7ef5f832a7d9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t70/after/test.java
@@ -0,0 +1,6 @@
+class Test {
+ float[][] a;
+ public void foo(float p) {
+ a = new float[][]{{p}, {p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t70/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t70/before/test.java
new file mode 100644
index 000000000000..d98804a2576f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t70/before/test.java
@@ -0,0 +1,6 @@
+class Test {
+ int[][] a;
+ public void foo(int p) {
+ a = new int[][]{{p}, {p}};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t71/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t71/after/Test.items
new file mode 100644
index 000000000000..f65db392b622
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t71/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : java.lang.Class<? extends java.lang.Number>
+
+Conversions:
+byte.class -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t71/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t71/after/test.java
new file mode 100644
index 000000000000..be0143bbaafb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t71/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Class<? extends Number> f = byte.class;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t71/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t71/before/test.java
new file mode 100644
index 000000000000..e3c0a3aecee2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t71/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Class f = byte.class;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t72/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t72/after/Test.items
new file mode 100644
index 000000000000..cacd1729289d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t72/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f : java.lang.Class<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+Fails:
+byte.class->java.lang.Class<java.lang.Integer>
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t72/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t72/after/test.java
new file mode 100644
index 000000000000..ace9fbcc92a8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t72/after/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Class<Integer> f = byte.class;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t72/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t72/before/test.java
new file mode 100644
index 000000000000..e3c0a3aecee2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t72/before/test.java
@@ -0,0 +1,3 @@
+class Test {
+ Class f = byte.class;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t73/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t73/after/Test.items
new file mode 100644
index 000000000000..f46b39d67281
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t73/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiArrayInitializerExpression:{} : java.util.Set<java.awt.Component>[]
+PsiField:f : java.util.Set<java.awt.Component>[][]
+
+Conversions:
+
+New expression type changes:
+Fails:
+new Set[][]{{}}->java.util.Set<java.awt.Component>[][]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t73/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t73/after/test.java
new file mode 100644
index 000000000000..da9d9b2e6fe8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t73/after/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+import javax.swing.*;
+import java.awt.*;
+class Test {
+ Set<Component>[][] f = new Set[][]{{}};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t73/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t73/before/test.java
new file mode 100644
index 000000000000..b07764b2c29f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t73/before/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+import javax.swing.*;
+import java.awt.*;
+class Test {
+ Set<JComponent>[][] f = new Set[][]{{}};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t74/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t74/after/Test.items
new file mode 100644
index 000000000000..236f769a7b98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t74/after/Test.items
@@ -0,0 +1,22 @@
+Types:
+PsiLocalVariable:v1 : float
+PsiLocalVariable:v2 : float
+PsiLocalVariable:v3 : float
+PsiLocalVariable:v4 : float
+PsiLocalVariable:vu1 : float
+PsiLocalVariable:vu2 : float
+PsiLocalVariable:vu3 : float
+PsiParameter:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+PsiReferenceExpression:pi : float
+
+Conversions:
+
+New expression type changes:
+Fails:
+~pi->float
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t74/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t74/after/test.java
new file mode 100644
index 000000000000..25d776d7d8c6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t74/after/test.java
@@ -0,0 +1,11 @@
+class Test {
+ public void meth(float pi) {
+ float v1 = pi++;
+ float v2 = pi--;
+ float v3 = ++pi;
+ float v4 = --pi;
+ float vu1 = -pi;
+ float vu2 = +pi;
+ float vu3 = ~pi;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t74/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t74/before/test.java
new file mode 100644
index 000000000000..c6e83eedc1bd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t74/before/test.java
@@ -0,0 +1,11 @@
+class Test {
+ public void meth(int pi) {
+ int v1 = pi++;
+ int v2 = pi--;
+ int v3 = ++pi;
+ int v4 = --pi;
+ int vu1 = -pi;
+ int vu2 = +pi;
+ int vu3 = ~pi;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t75/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t75/after/Test.items
new file mode 100644
index 000000000000..9c3eb7b369e3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t75/after/Test.items
@@ -0,0 +1,38 @@
+Types:
+PsiLocalVariable:vn4 : java.lang.String
+PsiParameter:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
+pn->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t75/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t75/after/test.java
new file mode 100644
index 000000000000..750c3d1d51a4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t75/after/test.java
@@ -0,0 +1,12 @@
+class Test {
+ public void meth(String pn) {
+ int vn1 = pn * pn;
+ int vn2 = pn / pn;
+ int vn3 = pn % pn;
+ String vn4 = pn + pn;
+ int vn5 = pn - pn;
+ int vn6 = pn << pn;
+ int vn7 = pn >> pn;
+ int vn8 = pn >>> pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t75/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t75/before/test.java
new file mode 100644
index 000000000000..fdde94165b43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t75/before/test.java
@@ -0,0 +1,12 @@
+class Test {
+ public void meth(byte pn) {
+ int vn1 = pn * pn;
+ int vn2 = pn / pn;
+ int vn3 = pn % pn;
+ int vn4 = pn + pn;
+ int vn5 = pn - pn;
+ int vn6 = pn << pn;
+ int vn7 = pn >> pn;
+ int vn8 = pn >>> pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t76/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t76/after/Test.items
new file mode 100644
index 000000000000..7a2163c3200b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t76/after/Test.items
@@ -0,0 +1,37 @@
+Types:
+PsiLocalVariable:vn1 : float
+PsiLocalVariable:vn2 : float
+PsiLocalVariable:vn3 : float
+PsiLocalVariable:vn4 : float
+PsiLocalVariable:vn5 : float
+PsiLocalVariable:vn6 : float
+PsiLocalVariable:vn7 : float
+PsiLocalVariable:vn8 : float
+PsiParameter:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+PsiReferenceExpression:pn : float
+
+Conversions:
+
+New expression type changes:
+Fails:
+pn->float
+pn->float
+pn->float
+pn->float
+pn->float
+pn->float
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t76/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t76/after/test.java
new file mode 100644
index 000000000000..3e6b69cf7c94
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t76/after/test.java
@@ -0,0 +1,12 @@
+class Test {
+ public void meth(float pn) {
+ float vn1 = pn * pn;
+ float vn2 = pn / pn;
+ float vn3 = pn % pn;
+ float vn4 = pn + pn;
+ float vn5 = pn - pn;
+ float vn6 = pn << pn;
+ float vn7 = pn >> pn;
+ float vn8 = pn >>> pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t76/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t76/before/test.java
new file mode 100644
index 000000000000..fdde94165b43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t76/before/test.java
@@ -0,0 +1,12 @@
+class Test {
+ public void meth(byte pn) {
+ int vn1 = pn * pn;
+ int vn2 = pn / pn;
+ int vn3 = pn % pn;
+ int vn4 = pn + pn;
+ int vn5 = pn - pn;
+ int vn6 = pn << pn;
+ int vn7 = pn >> pn;
+ int vn8 = pn >>> pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t77/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t77/after/Test.items
new file mode 100644
index 000000000000..dc0f44202f9b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t77/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:pn : java.lang.Object
+PsiReferenceExpression:pn : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
+pn->java.lang.Object
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t77/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t77/after/test.java
new file mode 100644
index 000000000000..4e8733a49d43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t77/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(Object pn, int p) {
+ p += pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t77/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t77/before/test.java
new file mode 100644
index 000000000000..252a45c4acc5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t77/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(int pn, int p) {
+ p += pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t78/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t78/after/Test.items
new file mode 100644
index 000000000000..f935ec3be774
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t78/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiParameter:p : java.lang.String
+PsiParameter:pn : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:pn : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t78/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t78/after/test.java
new file mode 100644
index 000000000000..573deb573d11
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t78/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(String pn, String p) {
+ p += pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t78/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t78/before/test.java
new file mode 100644
index 000000000000..252a45c4acc5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t78/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(int pn, int p) {
+ p += pn;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t79/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t79/after/Test.items
new file mode 100644
index 000000000000..9e7dba8b794e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t79/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : byte
+PsiReferenceExpression:p : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t79/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t79/after/test.java
new file mode 100644
index 000000000000..37ec2cb0f5fd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t79/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(byte p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t79/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t79/before/test.java
new file mode 100644
index 000000000000..30db2da5fa91
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t79/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(int p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t80/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t80/after/Test.items
new file mode 100644
index 000000000000..55661712f811
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t80/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : double
+PsiReferenceExpression:p : double
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t80/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t80/after/test.java
new file mode 100644
index 000000000000..5fe4738b6a5e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t80/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(double p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t80/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t80/before/test.java
new file mode 100644
index 000000000000..30db2da5fa91
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t80/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(int p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t81/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t81/after/Test.items
new file mode 100644
index 000000000000..f89012c7c140
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t81/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:o : A
+PsiReferenceExpression:o : A
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t81/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t81/after/test.java
new file mode 100644
index 000000000000..55deae9424fa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t81/after/test.java
@@ -0,0 +1,9 @@
+class A {}
+
+class B extends A {}
+
+class Test {
+ void foo(A o) {
+ if (o instanceof B){}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t81/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t81/before/test.java
new file mode 100644
index 000000000000..8bccf86ced7b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t81/before/test.java
@@ -0,0 +1,9 @@
+class A {}
+
+class B extends A {}
+
+class Test {
+ void foo(Object o) {
+ if (o instanceof B){}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t82/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t82/after/Test.items
new file mode 100644
index 000000000000..5164a4b2f6d9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t82/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:o : C
+PsiReferenceExpression:o : C
+
+Conversions:
+
+New expression type changes:
+Fails:
+o->C
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t82/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t82/after/test.java
new file mode 100644
index 000000000000..83b747a3cb27
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t82/after/test.java
@@ -0,0 +1,11 @@
+class C{}
+
+class A {}
+
+class B extends A {}
+
+class Test {
+ void foo(C o) {
+ if (o instanceof B){}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t82/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t82/before/test.java
new file mode 100644
index 000000000000..cb617f44766f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t82/before/test.java
@@ -0,0 +1,11 @@
+class C{}
+
+class A {}
+
+class B extends A {}
+
+class Test {
+ void foo(Object o) {
+ if (o instanceof B){}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t83/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t83/after/Test.items
new file mode 100644
index 000000000000..9f0dab259a44
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t83/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : java.lang.Object
+PsiReferenceExpression:p : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t83/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t83/after/test.java
new file mode 100644
index 000000000000..2a6715c81d3f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t83/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(Object p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t83/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t83/before/test.java
new file mode 100644
index 000000000000..30db2da5fa91
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t83/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ public void meth(int p) {
+ float f = (float)p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t84/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t84/after/Test.items
new file mode 100644
index 000000000000..5f64399bef41
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t84/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiLocalVariable:f : java.util.Set<? extends java.util.Set>
+PsiParameter:p : java.util.Set<? extends java.util.Set>
+PsiReferenceExpression:p : java.util.Set<? extends java.util.Set>
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t84/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t84/after/test.java
new file mode 100644
index 000000000000..b055ef3a4df9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t84/after/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+class Test {
+ public void meth(Set<? extends Set> p) {
+ Set<? extends Set> f = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t84/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t84/before/test.java
new file mode 100644
index 000000000000..7c85f93d7a57
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t84/before/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+class Test {
+ public void meth(Set p) {
+ Set<Set> f = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t85/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t85/after/Test.items
new file mode 100644
index 000000000000..76d7b14baa5d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t85/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:str : java.lang.Integer
+PsiMethod:get : java.lang.Integer
+PsiReferenceExpression:str : java.lang.Integer
+PsiReferenceExpression:str : java.lang.Integer
+PsiReferenceExpression:str : java.lang.Integer
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t85/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t85/after/test.java
new file mode 100644
index 000000000000..c43a426e5277
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t85/after/test.java
@@ -0,0 +1,8 @@
+public class Test {
+
+ Integer str;
+ Integer get(boolean f) {
+ return f ? str : str + str;
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t85/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t85/before/test.java
new file mode 100644
index 000000000000..adde8623a884
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t85/before/test.java
@@ -0,0 +1,8 @@
+public class Test {
+
+ String str;
+ String get(boolean f) {
+ return f ? str : str + str;
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t86/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t86/after/Test.items
new file mode 100644
index 000000000000..c2f8f1dd9fa6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t86/after/Test.items
@@ -0,0 +1,18 @@
+Types:
+PsiArrayAccessExpression:array[i] : java.lang.String
+PsiArrayAccessExpression:array[i] : java.lang.String
+PsiLocalVariable:array : java.util.List<java.lang.String>
+PsiMethod:getArray : java.util.List<java.lang.String>
+PsiMethodCallExpression:getArray() : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array.length : int
+
+Conversions:
+array.length -> $qualifier$.size() $qualifier$.length
+array[i] -> $qualifier$.get($idx$) $qualifier$[$idx$]
+array[i] -> $qualifier$.set($idx$, $expr$) $qualifier$[$idx$] = $expr$ array[i] = ""
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t86/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t86/after/test.java
new file mode 100644
index 000000000000..25f8b851603d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t86/after/test.java
@@ -0,0 +1,16 @@
+import java.util.List;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ for (int i = 0; i < array.size(); i++) {
+ System.out.println(array.get(i));
+ array.set(i, "");
+ }
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t86/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t86/before/test.java
new file mode 100644
index 000000000000..880c69463055
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t86/before/test.java
@@ -0,0 +1,16 @@
+import java.util.List;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ for (int i = 0; i < array.length; i++) {
+ System.out.println(array[i]);
+ array[i] = "";
+ }
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t87/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t87/after/Test.items
new file mode 100644
index 000000000000..45193ce9dcf4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t87/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiLocalVariable:array : java.lang.String[]
+PsiMethod:getArray : java.lang.String[]
+PsiMethodCallExpression:getArray() : java.lang.String[]
+PsiReferenceExpression:array : java.lang.String[]
+
+Conversions:
+array -> Arrays.sort($qualifier$) Collections.sort($qualifier$) Collections.sort(array)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t87/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t87/after/test.java
new file mode 100644
index 000000000000..f0e5159bfcfd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t87/after/test.java
@@ -0,0 +1,13 @@
+import java.util.*;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ Arrays.sort(array);
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t87/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t87/before/test.java
new file mode 100644
index 000000000000..12a28fa3084c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t87/before/test.java
@@ -0,0 +1,13 @@
+import java.util.*;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ Collections.sort(array);
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t88/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t88/after/Test.items
new file mode 100644
index 000000000000..60ae50f9c699
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t88/after/Test.items
@@ -0,0 +1,15 @@
+Types:
+PsiLocalVariable:array : java.util.List<java.lang.String>
+PsiMethod:getArray : java.util.List<java.lang.String>
+PsiMethodCallExpression:getArray() : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+
+Conversions:
+array -> Collections.sort($qualifier$, $expr$) Arrays.sort($qualifier$, $expr$) Arrays.sort(array, new Comparator<String>() {
+ public int compare(String s1, String s2) {
+ return 0;
+ }
+ })
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t88/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t88/after/test.java
new file mode 100644
index 000000000000..4be724c5d907
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t88/after/test.java
@@ -0,0 +1,18 @@
+import java.util.*;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ Collections.sort(array, new Comparator<String>() {
+ public int compare(String s1, String s2) {
+ return 0;
+ }
+ });
+
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t88/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t88/before/test.java
new file mode 100644
index 000000000000..ce19bd33f20e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t88/before/test.java
@@ -0,0 +1,18 @@
+import java.util.*;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ Arrays.sort(array, new Comparator<String>() {
+ public int compare(String s1, String s2) {
+ return 0;
+ }
+ });
+
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t89/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t89/after/Test.items
new file mode 100644
index 000000000000..069dfb76e5c3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t89/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiLocalVariable:array : java.lang.String[]
+PsiMethod:getArray : java.lang.String[]
+PsiMethodCallExpression:getArray() : java.lang.String[]
+PsiReferenceExpression:array : java.lang.String[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+array->java.lang.String[]
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t89/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t89/after/test.java
new file mode 100644
index 000000000000..5a625c53c286
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t89/after/test.java
@@ -0,0 +1,13 @@
+import java.util.*;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ Collections.checkedList(array, String.class);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t89/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t89/before/test.java
new file mode 100644
index 000000000000..c12161d8c76d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t89/before/test.java
@@ -0,0 +1,13 @@
+import java.util.*;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ Collections.checkedList(array, String.class);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t90/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t90/after/Test.items
new file mode 100644
index 000000000000..721469c186fa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t90/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:l : java.util.List<A>
+PsiMethodCallExpression:b.foo() : java.util.Map<java.lang.String,java.lang.String>
+PsiParameter:b : A
+PsiReferenceExpression:b : A
+PsiReferenceExpression:l : java.util.List<A>
+
+Conversions:
+b.foo() -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t90/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t90/after/test.java
new file mode 100644
index 000000000000..06c072088b02
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t90/after/test.java
@@ -0,0 +1,24 @@
+import java.util.*;
+public class Test {
+ List<A> l;
+
+ @Override
+ Map<String, String> foo() {
+ HashMap<String, String> m = new HashMap<String, String>();
+ for (A b : l) {
+ Map<String, String> map = b.foo();
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ if (!m.containsKey(entry.getKey())) {
+ m.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ return m;
+ }
+}
+
+class A {
+ Map<String, String> foo(){return null;}
+}
+
+class B extends A {} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t90/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t90/before/test.java
new file mode 100644
index 000000000000..80afdc6aa08b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t90/before/test.java
@@ -0,0 +1,24 @@
+import java.util.*;
+public class Test {
+ List<B> l;
+
+ @Override
+ Map<String, String> foo() {
+ HashMap<String, String> m = new HashMap<String, String>();
+ for (B b : l) {
+ Map<String, String> map = b.foo();
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ if (!m.containsKey(entry.getKey())) {
+ m.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ return m;
+ }
+}
+
+class A {
+ Map<String, String> foo(){return null;}
+}
+
+class B extends A {} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t91/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t91/after/Test.items
new file mode 100644
index 000000000000..9b53aeaf2084
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t91/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiMethod:foo : java.lang.String[]
+
+Conversions:
+"" -> new java.lang.String[]{$qualifier$} $qualifier$ ""
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t91/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t91/after/test.java
new file mode 100644
index 000000000000..9575d720b844
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t91/after/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ String[] foo(){
+ return new String[]{""};
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t91/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t91/before/test.java
new file mode 100644
index 000000000000..e916bd0a5dab
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t91/before/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ String foo(){
+ return "";
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t92/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t92/after/Test.items
new file mode 100644
index 000000000000..bf241c7966a7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t92/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.List<java.lang.Integer>
+PsiNewExpression:new ArrayList<String>(){} : java.util.ArrayList<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+new ArrayList<String>(){} -> java.util.ArrayList<java.lang.Integer>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t92/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t92/after/test.java
new file mode 100644
index 000000000000..f70bc9515dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t92/after/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+public class Test {
+ List<Integer> f = new ArrayList<Integer>(){};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t92/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t92/before/test.java
new file mode 100644
index 000000000000..89ae1f7d3101
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t92/before/test.java
@@ -0,0 +1,4 @@
+import java.util.*;
+public class Test {
+ List<String> f = new ArrayList<String>(){};
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t93/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t93/after/Test.items
new file mode 100644
index 000000000000..ea2fc9440478
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t93/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:f : java.util.Map<java.lang.Boolean,java.lang.String>
+PsiParameter:b : boolean
+PsiReferenceExpression:b : boolean
+PsiReferenceExpression:f : java.util.Map<java.lang.Boolean,java.lang.String>
+
+Conversions:
+f -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t93/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t93/after/test.java
new file mode 100644
index 000000000000..6b714f8e8862
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t93/after/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ Map<Boolean, String> f;
+
+ void foo(boolean b) {
+ f.put(b, null);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t93/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t93/before/test.java
new file mode 100644
index 000000000000..292b5f9f0361
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t93/before/test.java
@@ -0,0 +1,8 @@
+import java.util.*;
+public class Test {
+ Map<Boolean, String> f;
+
+ void foo(Boolean b) {
+ f.put(b, null);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t94/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t94/after/Test.items
new file mode 100644
index 000000000000..76ae2a02000b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t94/after/Test.items
@@ -0,0 +1,13 @@
+Types:
+PsiLocalVariable:array : java.lang.String[]
+PsiMethod:getArray : java.lang.String[]
+PsiMethodCallExpression:getArray() : java.lang.String[]
+PsiReferenceExpression:array : java.lang.String[]
+PsiReferenceExpression:array : java.lang.String[]
+
+Conversions:
+array -> Arrays.binarySearch($qualifier$, $key$) Collections.binarySearch($qualifier$, $key$) Collections.binarySearch(array, "")
+array -> Arrays.sort($qualifier$) Collections.sort($qualifier$) Collections.sort(array)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t94/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t94/after/test.java
new file mode 100644
index 000000000000..d8df3e65dd43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t94/after/test.java
@@ -0,0 +1,14 @@
+import java.util.*;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ Arrays.binarySearch(array, "");
+ Arrays.sort(array);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t94/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t94/before/test.java
new file mode 100644
index 000000000000..99bf050d6f00
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t94/before/test.java
@@ -0,0 +1,14 @@
+import java.util.*;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ Collections.binarySearch(array, "");
+ Collections.sort(array);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t95/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t95/after/Test.items
new file mode 100644
index 000000000000..d3f8033938ea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t95/after/Test.items
@@ -0,0 +1,13 @@
+Types:
+PsiLocalVariable:array : java.util.List<java.lang.String>
+PsiMethod:getArray : java.util.List<java.lang.String>
+PsiMethodCallExpression:getArray() : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+
+Conversions:
+array -> Collections.binarySearch($qualifier$, $key$) Arrays.binarySearch($qualifier$, $key$) Arrays.binarySearch(array, "")
+array -> Collections.sort($qualifier$) Arrays.sort($qualifier$) Arrays.sort(array)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t95/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t95/after/test.java
new file mode 100644
index 000000000000..99bf050d6f00
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t95/after/test.java
@@ -0,0 +1,14 @@
+import java.util.*;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo() {
+ List<String> array = getArray();
+ Collections.binarySearch(array, "");
+ Collections.sort(array);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t95/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t95/before/test.java
new file mode 100644
index 000000000000..d8df3e65dd43
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t95/before/test.java
@@ -0,0 +1,14 @@
+import java.util.*;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo() {
+ String[] array = getArray();
+ Arrays.binarySearch(array, "");
+ Arrays.sort(array);
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t96/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t96/after/Test.items
new file mode 100644
index 000000000000..d107b7626a41
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t96/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f1 : java.lang.String
+PsiField:f2 : java.lang.String
+PsiReferenceExpression:f1 : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t96/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t96/after/test.java
new file mode 100644
index 000000000000..25357fd46118
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t96/after/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ String f1 = null;
+ String f2 = f1;
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t96/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t96/before/test.java
new file mode 100644
index 000000000000..55d7110ccb83
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t96/before/test.java
@@ -0,0 +1,5 @@
+public class Test {
+ Integer f1 = null;
+ Integer f2 = f1;
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t97/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t97/after/Test.items
new file mode 100644
index 000000000000..1d376856a7ac
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t97/after/Test.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:f1 : int
+
+Conversions:
+
+New expression type changes:
+Fails:
+{0}->int
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t97/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t97/after/test.java
new file mode 100644
index 000000000000..61687e78d725
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t97/after/test.java
@@ -0,0 +1,4 @@
+public class Test {
+ int f1 = {0};
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t97/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t97/before/test.java
new file mode 100644
index 000000000000..f33899c2c3d7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t97/before/test.java
@@ -0,0 +1,4 @@
+public class Test {
+ Integer[] f1 = {0};
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t98/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t98/after/Test.items
new file mode 100644
index 000000000000..9b5e0b6b54e9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t98/after/Test.items
@@ -0,0 +1,21 @@
+Types:
+PsiArrayAccessExpression:array[i] : java.lang.String
+PsiArrayAccessExpression:array[i] : java.lang.String
+PsiArrayAccessExpression:array[i] : java.lang.String
+PsiLocalVariable:array : java.util.List<java.lang.String>
+PsiMethod:getArray : java.util.List<java.lang.String>
+PsiMethodCallExpression:getArray() : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array : java.util.List<java.lang.String>
+PsiReferenceExpression:array.length : int
+
+Conversions:
+array.length -> $qualifier$.size() $qualifier$.length
+array[i] -> $qualifier$.get($idx$) $qualifier$[$idx$]
+array[i] -> $qualifier$.get($idx$) $qualifier$[$idx$]
+array[i] -> $qualifier$.get($idx$) $qualifier$[$idx$]
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t98/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t98/after/test.java
new file mode 100644
index 000000000000..86e1e0b4f6c2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t98/after/test.java
@@ -0,0 +1,17 @@
+import java.util.List;
+public class Test {
+
+ List<String> getArray(){
+ return null;
+ }
+
+ void foo(String param) {
+ List<String> array = getArray();
+ for (int i = 0; i < array.size(); i++) {
+ System.out.println(array.get(i));
+ String str = array.get(i);
+ param = array.get(i);
+ }
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t98/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t98/before/test.java
new file mode 100644
index 000000000000..b79f9495d4ac
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t98/before/test.java
@@ -0,0 +1,17 @@
+import java.util.List;
+public class Test {
+
+ String[] getArray(){
+ return null;
+ }
+
+ void foo(String param) {
+ String[] array = getArray();
+ for (int i = 0; i < array.length; i++) {
+ System.out.println(array[i]);
+ String str = array[i];
+ param = array[i];
+ }
+ }
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t99/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/t99/after/Test.items
new file mode 100644
index 000000000000..93ca5aa6a01e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t99/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:f : java.util.Set<java.util.List<int[]>>
+PsiNewExpression:new Set<List<char[]>>() : java.util.Set<java.util.List<int[]>>
+
+Conversions:
+
+New expression type changes:
+new Set<List<char[]>>() -> java.util.Set<java.util.List<int[]>>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t99/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/t99/after/test.java
new file mode 100644
index 000000000000..1f7b49a490d9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t99/after/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ Set<List<int[]>> f = new Set<>();
+
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/t99/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/t99/before/test.java
new file mode 100644
index 000000000000..7ae6a2b492ba
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/t99/before/test.java
@@ -0,0 +1,6 @@
+import java.util.*;
+public class Test {
+ Set<List<char[]>> f = new Set<List<char[]>>();
+
+
+}
diff --git a/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/Test.items b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/Test.items
new file mode 100644
index 000000000000..ab263cc2b7a6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:list : java.util.Collection<java.lang.Integer>
+PsiNewExpression:new ArrayList<>(2) : java.util.ArrayList<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+new ArrayList<>(2) -> java.util.ArrayList<java.lang.Integer>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/test.java b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/test.java
new file mode 100644
index 000000000000..7d25d562b91d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/after/test.java
@@ -0,0 +1,9 @@
+import java.lang.annotation.*;
+import java.util.*;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { }
+
+class Test {
+ Collection<@TA Integer> list = new ArrayList<>(2);
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigration/typeAnno/before/test.java b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/before/test.java
new file mode 100644
index 000000000000..6cc51471d8d8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigration/typeAnno/before/test.java
@@ -0,0 +1,9 @@
+import java.lang.annotation.*;
+import java.util.*;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { }
+
+class Test {
+ ArrayList<@TA Integer> list = new ArrayList<>(2);
+} \ No newline at end of file