summaryrefslogtreecommitdiff
path: root/java/typeMigration/testData
diff options
context:
space:
mode:
Diffstat (limited to 'java/typeMigration/testData')
-rw-r--r--java/typeMigration/testData/intentions/atomic/after1.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/after10.java10
-rw-r--r--java/typeMigration/testData/intentions/atomic/after12.java12
-rw-r--r--java/typeMigration/testData/intentions/atomic/after13.java6
-rw-r--r--java/typeMigration/testData/intentions/atomic/after14.java10
-rw-r--r--java/typeMigration/testData/intentions/atomic/after2.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/after3.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/after4.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/after5.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/after6.java6
-rw-r--r--java/typeMigration/testData/intentions/atomic/after7.java11
-rw-r--r--java/typeMigration/testData/intentions/atomic/after8.java11
-rw-r--r--java/typeMigration/testData/intentions/atomic/after9.java15
-rw-r--r--java/typeMigration/testData/intentions/atomic/afterExcl.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/afterTA1.java10
-rw-r--r--java/typeMigration/testData/intentions/atomic/before1.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/before10.java8
-rw-r--r--java/typeMigration/testData/intentions/atomic/before11.java8
-rw-r--r--java/typeMigration/testData/intentions/atomic/before12.java10
-rw-r--r--java/typeMigration/testData/intentions/atomic/before13.java4
-rw-r--r--java/typeMigration/testData/intentions/atomic/before14.java8
-rw-r--r--java/typeMigration/testData/intentions/atomic/before2.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/before3.java5
-rw-r--r--java/typeMigration/testData/intentions/atomic/before4.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/before5.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/before6.java4
-rw-r--r--java/typeMigration/testData/intentions/atomic/before7.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/before8.java9
-rw-r--r--java/typeMigration/testData/intentions/atomic/before9.java13
-rw-r--r--java/typeMigration/testData/intentions/atomic/beforeExcl.java7
-rw-r--r--java/typeMigration/testData/intentions/atomic/beforeTA1.java9
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after1.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after2.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after3.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after4.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after5.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after6.java12
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after7.java15
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/after8.java9
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/afterTA1.java14
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before1.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before2.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before3.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before4.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before5.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before6.java7
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before7.java10
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/before8.java4
-rw-r--r--java/typeMigration/testData/intentions/threadLocal/beforeTA1.java9
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java9
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java.after9
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java12
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java.after12
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java.after16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java17
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java.after17
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java4
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java.after4
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java.after16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java29
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java.after29
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java29
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java.after29
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java31
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java.after31
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java.after16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java20
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java.after20
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java12
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java.after12
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java14
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java.after14
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java15
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java.after15
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java14
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java.after14
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java18
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java.after18
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java19
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java.after19
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java18
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java.after18
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java15
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java.after15
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java.after16
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java9
-rw-r--r--java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java.after9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.items33
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/before/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.items37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.java54
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/before/Expr.java54
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Ession.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Expr.java20
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/before/Expr.java20
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.items19
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.java26
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/before/Expr.java26
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/before/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.items8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/before/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.items30
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.java16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/before/Expr.java16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.items19
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/before/Expr.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/before/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.items58
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/before/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.items78
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.java42
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/before/Expr.java42
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.items98
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.java46
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/before/Expr.java46
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.items62
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/before/Expr.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/before/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.items8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/before/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.items23
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.items8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/before/Expr.java9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.items35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.items37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.items36
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/before/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/before/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/before/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/before/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/before/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/before/Expr.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/before/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.items36
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.items35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.items33
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.items34
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.items37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.items35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/before/Expr.java27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.items22
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/before/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.items14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/before/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/before/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.items25
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/before/Expr.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.items21
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/before/Expr.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.items34
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/before/Expr.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.items18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/before/Expr.java11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/before/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/before/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.items10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/before/Expr.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.items27
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.java21
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/before/Expr.java21
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/before/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/before/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.items10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/before/Expr.java5
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Overriding.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Parent.items12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/before/Overriding.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Child.items12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Overriding.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/before/Overriding.java13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.items8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/before/Spec.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.items7
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.java3
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/before/Spec.java3
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.items13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/before/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.items13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/before/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.items13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/before/Type.java15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.items10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.items8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.items11
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/before/Type.java8
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.items13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.items13
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.items33
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.java40
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/before/Type.java40
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.items33
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.java37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/before/Type.java37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.items37
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.java39
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/before/Type.java39
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.items32
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/before/Type.java35
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.items9
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/before/Type.java10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.items10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.items10
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/before/Type.java6
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.items26
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.items22
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.items26
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.items26
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.items25
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.items21
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.items23
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.items23
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.items24
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.items22
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.items22
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.items25
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/before/Type.java12
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/before/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/before/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.items16
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/before/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.items15
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/before/Type.java14
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.items17
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.java18
-rw-r--r--java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/before/Type.java18
-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
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.items25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.java16
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/before/Test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.items19
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/before/Test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/before/Test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.items25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/before/Test.java12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.items34
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.java20
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/before/Test.java18
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/before/Test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.items14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/before/Test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.items26
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/before/Test.java15
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.items26
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/before/Test.java14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.items13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/before/Test.java10
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.items25
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/before/Test.java13
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.items35
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.java19
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/before/Test.java19
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.items14
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.items22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.items22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/before/Test.java9
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.items22
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/before/Test.java11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentExtends/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentSuper/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerExtends/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerSuper/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/Test.items12
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getExtends/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getExtends/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getExtends/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getSuper/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getSuper/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getSuper/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/getUnbounded/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/lengthSize/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/lengthSize/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/lengthSize/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtends/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtends/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtends/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerSuper/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerSuper/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerSuper/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/Test.items11
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/producerUnbounded/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/before/test.java5
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/Test.items9
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/before/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/Test.items10
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/test.java7
-rw-r--r--java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/before/test.java7
952 files changed, 12013 insertions, 0 deletions
diff --git a/java/typeMigration/testData/intentions/atomic/after1.java b/java/typeMigration/testData/intentions/atomic/after1.java
new file mode 100644
index 000000000000..853f715fd8c4
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after1.java
@@ -0,0 +1,9 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicIntegerArray field= new AtomicIntegerArray(foo());
+ int[] foo() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after10.java b/java/typeMigration/testData/intentions/atomic/after10.java
new file mode 100644
index 000000000000..685e3fb710e2
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after10.java
@@ -0,0 +1,10 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger o = new AtomicInteger(0);
+
+ void foo() {
+ boolean b = this.o.get() == 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after12.java b/java/typeMigration/testData/intentions/atomic/after12.java
new file mode 100644
index 000000000000..8accafd9fa10
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after12.java
@@ -0,0 +1,12 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+
+ {
+ AtomicInteger i = new AtomicInteger(0);
+ Integer j = 0;
+
+ assert j == i.get();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after13.java b/java/typeMigration/testData/intentions/atomic/after13.java
new file mode 100644
index 000000000000..dea58d02e88c
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after13.java
@@ -0,0 +1,6 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger i = new AtomicInteger(0);
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after14.java b/java/typeMigration/testData/intentions/atomic/after14.java
new file mode 100644
index 000000000000..6109d4106e9b
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after14.java
@@ -0,0 +1,10 @@
+import java.util.concurrent.atomic.AtomicLong;
+
+// "Convert to atomic" "true"
+class T {
+ private final AtomicLong l = new AtomicLong(10L);
+
+ public synchronized void update(long m) {
+ l.set(m);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after2.java b/java/typeMigration/testData/intentions/atomic/after2.java
new file mode 100644
index 000000000000..2c2ad94beeb0
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after2.java
@@ -0,0 +1,9 @@
+import java.util.concurrent.atomic.AtomicReferenceArray;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicReferenceArray<Object> field= new AtomicReferenceArray<>(foo());
+ Object[] foo() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after3.java b/java/typeMigration/testData/intentions/atomic/after3.java
new file mode 100644
index 000000000000..505349d5dc36
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after3.java
@@ -0,0 +1,7 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicIntegerArray field= new AtomicIntegerArray(new int[]{1});
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after4.java b/java/typeMigration/testData/intentions/atomic/after4.java
new file mode 100644
index 000000000000..e268b2604404
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after4.java
@@ -0,0 +1,9 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger i = new AtomicInteger(0);
+
+ int j = i.get() + 5;
+ String s = "i = " + i.get();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after5.java b/java/typeMigration/testData/intentions/atomic/after5.java
new file mode 100644
index 000000000000..82ff84c68e75
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after5.java
@@ -0,0 +1,9 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger i = new AtomicInteger(0 + 8);
+
+ int j = i.get() + 5;
+ String s = "i = " + i.get();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after6.java b/java/typeMigration/testData/intentions/atomic/after6.java
new file mode 100644
index 000000000000..f0120300e0f9
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after6.java
@@ -0,0 +1,6 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicIntegerArray i = new AtomicIntegerArray(new int[0]);
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after7.java b/java/typeMigration/testData/intentions/atomic/after7.java
new file mode 100644
index 000000000000..19336f0bc61b
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after7.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger o = new AtomicInteger(0);
+ int j = o.get();
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after8.java b/java/typeMigration/testData/intentions/atomic/after8.java
new file mode 100644
index 000000000000..bdfbd5b03a4d
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after8.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger o = new AtomicInteger();
+ int j = o.get();
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/after9.java b/java/typeMigration/testData/intentions/atomic/after9.java
new file mode 100644
index 000000000000..c462a10961d4
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/after9.java
@@ -0,0 +1,15 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicInteger o;
+ int j = o.get();
+
+ Test(int o) {
+ this.o = new AtomicInteger(o);
+ }
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/afterExcl.java b/java/typeMigration/testData/intentions/atomic/afterExcl.java
new file mode 100644
index 000000000000..72f91198ce3d
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/afterExcl.java
@@ -0,0 +1,9 @@
+import java.util.concurrent.atomic.AtomicBoolean;
+
+// "Convert to atomic" "true"
+class Test {
+ final AtomicBoolean field= new AtomicBoolean(false);
+ {
+ boolean b = !field.get();
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/afterTA1.java b/java/typeMigration/testData/intentions/atomic/afterTA1.java
new file mode 100644
index 000000000000..a90ed666ea30
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/afterTA1.java
@@ -0,0 +1,10 @@
+// "Convert to atomic" "true"
+import java.lang.annotation.*;
+import java.util.concurrent.atomic.AtomicReference;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { int value(); }
+
+class T {
+ final AtomicReference<@TA(42) String> v = new AtomicReference<String>();
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before1.java b/java/typeMigration/testData/intentions/atomic/before1.java
new file mode 100644
index 000000000000..d3b926f29fb3
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before1.java
@@ -0,0 +1,7 @@
+// "Convert to atomic" "true"
+class Test {
+ int[] <caret>field=foo();
+ int[] foo() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before10.java b/java/typeMigration/testData/intentions/atomic/before10.java
new file mode 100644
index 000000000000..a4e7c9db6b75
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before10.java
@@ -0,0 +1,8 @@
+// "Convert to atomic" "true"
+class Test {
+ final int <caret>o = 0;
+
+ void foo() {
+ boolean b = this.o == 1;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before11.java b/java/typeMigration/testData/intentions/atomic/before11.java
new file mode 100644
index 000000000000..b1abb55f9503
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before11.java
@@ -0,0 +1,8 @@
+// "Convert to atomic" "false"
+class Test {
+ void foo() {
+ try (AutoCloseable <caret>r = null) {
+ System.out.println(r);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before12.java b/java/typeMigration/testData/intentions/atomic/before12.java
new file mode 100644
index 000000000000..2c634df22c2f
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before12.java
@@ -0,0 +1,10 @@
+// "Convert to atomic" "true"
+class Test {
+
+ {
+ int <caret>i = 0;
+ Integer j = 0;
+
+ assert j == i;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before13.java b/java/typeMigration/testData/intentions/atomic/before13.java
new file mode 100644
index 000000000000..179e2b165252
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before13.java
@@ -0,0 +1,4 @@
+// "Convert to atomic" "true"
+class Test {
+ volatile int <caret>i = 0;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before14.java b/java/typeMigration/testData/intentions/atomic/before14.java
new file mode 100644
index 000000000000..042b4c4dd2a1
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before14.java
@@ -0,0 +1,8 @@
+// "Convert to atomic" "true"
+class T {
+ private long <caret>l = 10L;
+
+ public synchronized void update(long m) {
+ l = m;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before2.java b/java/typeMigration/testData/intentions/atomic/before2.java
new file mode 100644
index 000000000000..d33fffc40e20
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before2.java
@@ -0,0 +1,7 @@
+// "Convert to atomic" "true"
+class Test {
+ Object[] <caret>field=foo();
+ Object[] foo() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before3.java b/java/typeMigration/testData/intentions/atomic/before3.java
new file mode 100644
index 000000000000..661dbdd63fb2
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before3.java
@@ -0,0 +1,5 @@
+// "Convert to atomic" "true"
+class Test {
+ int[] <caret>field= new int[]{1};
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before4.java b/java/typeMigration/testData/intentions/atomic/before4.java
new file mode 100644
index 000000000000..ecf4b985a5d2
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before4.java
@@ -0,0 +1,7 @@
+// "Convert to atomic" "true"
+class Test {
+ int <caret>i = 0;
+
+ int j = i + 5;
+ String s = "i = " + i;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before5.java b/java/typeMigration/testData/intentions/atomic/before5.java
new file mode 100644
index 000000000000..7ace336aa8be
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before5.java
@@ -0,0 +1,7 @@
+// "Convert to atomic" "true"
+class Test {
+ int <caret>i = 0 + 8;
+
+ int j = i + 5;
+ String s = "i = " + i;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before6.java b/java/typeMigration/testData/intentions/atomic/before6.java
new file mode 100644
index 000000000000..abc59802e025
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before6.java
@@ -0,0 +1,4 @@
+// "Convert to atomic" "true"
+class Test {
+ int[] <caret>i = new int[0];
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before7.java b/java/typeMigration/testData/intentions/atomic/before7.java
new file mode 100644
index 000000000000..fd2d066a4337
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before7.java
@@ -0,0 +1,9 @@
+// "Convert to atomic" "true"
+class Test {
+ int <caret>o = 0;
+ int j = o;
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before8.java b/java/typeMigration/testData/intentions/atomic/before8.java
new file mode 100644
index 000000000000..d2ef50810f7e
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before8.java
@@ -0,0 +1,9 @@
+// "Convert to atomic" "true"
+class Test {
+ int <caret>o;
+ int j = o;
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/before9.java b/java/typeMigration/testData/intentions/atomic/before9.java
new file mode 100644
index 000000000000..a9f693800f81
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/before9.java
@@ -0,0 +1,13 @@
+// "Convert to atomic" "true"
+class Test {
+ final int <caret>o;
+ int j = o;
+
+ Test(int o) {
+ this.o = o;
+ }
+
+ void foo() {
+ while ((o = j) != 0) {}
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/beforeExcl.java b/java/typeMigration/testData/intentions/atomic/beforeExcl.java
new file mode 100644
index 000000000000..3df455583c35
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/beforeExcl.java
@@ -0,0 +1,7 @@
+// "Convert to atomic" "true"
+class Test {
+ boolean <caret>field=false;
+ {
+ boolean b = !field;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/atomic/beforeTA1.java b/java/typeMigration/testData/intentions/atomic/beforeTA1.java
new file mode 100644
index 000000000000..10bdd5df4822
--- /dev/null
+++ b/java/typeMigration/testData/intentions/atomic/beforeTA1.java
@@ -0,0 +1,9 @@
+// "Convert to atomic" "true"
+import java.lang.annotation.*;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { int value(); }
+
+class T {
+ @TA(42) String <caret>v;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after1.java b/java/typeMigration/testData/intentions/threadLocal/after1.java
new file mode 100644
index 000000000000..b5df8fd35214
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after1.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ final ThreadLocal<Integer> field = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return 0;
+ }
+ };
+ void foo() {
+ field.set(field.get() + 1);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after2.java b/java/typeMigration/testData/intentions/threadLocal/after2.java
new file mode 100644
index 000000000000..3a546c5b0c9a
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after2.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ final ThreadLocal<String> field = new ThreadLocal<String>() {
+ @Override
+ protected String initialValue() {
+ return "";
+ }
+ };
+ void foo() {
+ System.out.println(field.get());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after3.java b/java/typeMigration/testData/intentions/threadLocal/after3.java
new file mode 100644
index 000000000000..9fc0f825ac4b
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after3.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ final ThreadLocal<Integer> field = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return new Integer(0);
+ }
+ };
+ void foo() {
+ if (field.get() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after4.java b/java/typeMigration/testData/intentions/threadLocal/after4.java
new file mode 100644
index 000000000000..8410a1c33c0e
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after4.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ final ThreadLocal<String> field = new ThreadLocal<String>() {
+ @Override
+ protected String initialValue() {
+ return "";
+ }
+ };
+ void foo() {
+ if (field.get().indexOf("a") == -1) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after5.java b/java/typeMigration/testData/intentions/threadLocal/after5.java
new file mode 100644
index 000000000000..435e1b6a50e6
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after5.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ final ThreadLocal<Integer> field = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return new Integer(0);
+ }
+ };
+ void foo(Test t) {
+ if (t.field.get() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after6.java b/java/typeMigration/testData/intentions/threadLocal/after6.java
new file mode 100644
index 000000000000..1879a46be16d
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after6.java
@@ -0,0 +1,12 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ static final ThreadLocal<Integer> field;
+ static {
+ field = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return new Integer(0);
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after7.java b/java/typeMigration/testData/intentions/threadLocal/after7.java
new file mode 100644
index 000000000000..5398ff5e2991
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after7.java
@@ -0,0 +1,15 @@
+// "Convert to ThreadLocal" "true"
+class X {
+ private final ThreadLocal<byte[]> bytes = new ThreadLocal<byte[]>() {
+ @Override
+ protected byte[] initialValue() {
+ return new byte[10];
+ }
+ };
+
+ byte foo(byte b) {
+ bytes.get()[0] = 1;
+ foo(bytes.get()[1])
+ return bytes.get()[2];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/after8.java b/java/typeMigration/testData/intentions/threadLocal/after8.java
new file mode 100644
index 000000000000..d158894b6130
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/after8.java
@@ -0,0 +1,9 @@
+// "Convert to ThreadLocal" "true"
+class X {
+ final ThreadLocal<Integer> i = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return 0;
+ }
+ };
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/afterTA1.java b/java/typeMigration/testData/intentions/threadLocal/afterTA1.java
new file mode 100644
index 000000000000..0e3687e146b6
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/afterTA1.java
@@ -0,0 +1,14 @@
+// "Convert to ThreadLocal" "true"
+import java.lang.annotation.*;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { int value(); }
+
+class Test {
+ final ThreadLocal<@TA(42) Integer> field = new ThreadLocal<Integer>() {
+ @Override
+ protected Integer initialValue() {
+ return 0;
+ }
+ };
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before1.java b/java/typeMigration/testData/intentions/threadLocal/before1.java
new file mode 100644
index 000000000000..e35925390137
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before1.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ int <caret>field=0;
+ void foo() {
+ field++;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before2.java b/java/typeMigration/testData/intentions/threadLocal/before2.java
new file mode 100644
index 000000000000..47c6471739d7
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before2.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ String <caret>field="";
+ void foo() {
+ System.out.println(field);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before3.java b/java/typeMigration/testData/intentions/threadLocal/before3.java
new file mode 100644
index 000000000000..19d296cffa36
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before3.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ Integer <caret>field=new Integer(0);
+ void foo() {
+ if (field == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before4.java b/java/typeMigration/testData/intentions/threadLocal/before4.java
new file mode 100644
index 000000000000..66d2efa6230a
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before4.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ String <caret>field="";
+ void foo() {
+ if (field.indexOf("a") == -1) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before5.java b/java/typeMigration/testData/intentions/threadLocal/before5.java
new file mode 100644
index 000000000000..c459443241e4
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before5.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ Integer <caret>field=new Integer(0);
+ void foo(Test t) {
+ if (t.field == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before6.java b/java/typeMigration/testData/intentions/threadLocal/before6.java
new file mode 100644
index 000000000000..74427e6e4f06
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before6.java
@@ -0,0 +1,7 @@
+// "Convert to ThreadLocal" "true"
+class Test {
+ static final Integer <caret>field;
+ static {
+ field = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before7.java b/java/typeMigration/testData/intentions/threadLocal/before7.java
new file mode 100644
index 000000000000..dfff0417b272
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before7.java
@@ -0,0 +1,10 @@
+// "Convert to ThreadLocal" "true"
+class X {
+ private final byte[] <caret>bytes = new byte[10];
+
+ byte foo(byte b) {
+ bytes[0] = 1;
+ foo(bytes[1])
+ return bytes[2];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/before8.java b/java/typeMigration/testData/intentions/threadLocal/before8.java
new file mode 100644
index 000000000000..af321e0da56c
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/before8.java
@@ -0,0 +1,4 @@
+// "Convert to ThreadLocal" "true"
+class X {
+ volatile int <caret>i = 0;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/intentions/threadLocal/beforeTA1.java b/java/typeMigration/testData/intentions/threadLocal/beforeTA1.java
new file mode 100644
index 000000000000..ac3409c2e759
--- /dev/null
+++ b/java/typeMigration/testData/intentions/threadLocal/beforeTA1.java
@@ -0,0 +1,9 @@
+// "Convert to ThreadLocal" "true"
+import java.lang.annotation.*;
+
+@Target(value = ElementType.TYPE_USE)
+public @interface TA { int value(); }
+
+class Test {
+ @TA(42) int <caret>field = 0;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java b/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java
new file mode 100644
index 000000000000..051e42810e3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java
@@ -0,0 +1,9 @@
+import java.util.List;
+class A<T> {
+ List<T> getKey(){return null;}
+}
+public class B extends A<S<caret>tring> {
+ List<String> getKey() {
+ return new List<String>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java.after
new file mode 100644
index 000000000000..8966bc1ee03d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/CompositeReturnType.java.after
@@ -0,0 +1,9 @@
+import java.util.List;
+class A<T> {
+ List<T> getKey(){return null;}
+}
+public class B extends A<Object> {
+ List<Object> getKey() {
+ return new List<>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java
new file mode 100644
index 000000000000..fabb24302b8d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java
@@ -0,0 +1,12 @@
+class Test {
+ interface A<T> {
+ void foo(T t);
+ }
+
+ class B implements A<Inte<caret>ger> {
+ Integer str;
+ public void foo(Integer s) {
+ str = s;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java.after
new file mode 100644
index 000000000000..01a6bf49322e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldTypeMigration.java.after
@@ -0,0 +1,12 @@
+class Test {
+ interface A<T> {
+ void foo(T t);
+ }
+
+ class B implements A<String> {
+ String str;
+ public void foo(String s) {
+ str = s;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java
new file mode 100644
index 000000000000..92864f163560
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java
@@ -0,0 +1,16 @@
+import java.util.List;
+
+class A<T> {
+ T t;
+ List<T> list = new List<T>();
+}
+
+class B extends A<S<caret>tring> {
+ void foo() {
+ if (t == null) return;
+ if (list == null) return;
+ for (String s : list) {
+ //do nothing
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java.after
new file mode 100644
index 000000000000..07ee7a4e9351
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage.java.after
@@ -0,0 +1,16 @@
+import java.util.List;
+
+class A<T> {
+ T t;
+ List<T> list = new List<T>();
+}
+
+class B extends A<Object> {
+ void foo() {
+ if (t == null) return;
+ if (list == null) return;
+ for (Object s : list) {
+ //do nothing
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java
new file mode 100644
index 000000000000..bff01e33a9e3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java
@@ -0,0 +1,17 @@
+import java.util.*;
+
+class A<T> {
+ protected T t;
+ protected List<T> list = new ArrayList<T>();
+}
+
+public class B extends A<S<caret>tring> {
+ void foo() {
+ if (t == null) return;
+ if (list == null) return;
+ System.out.println(t);
+ for (String s : list) {
+ //do nothing
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java.after
new file mode 100644
index 000000000000..b3764fda80de
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/FieldUsage1.java.after
@@ -0,0 +1,17 @@
+import java.util.*;
+
+class A<T> {
+ protected T t;
+ protected List<T> list = new ArrayList<T>();
+}
+
+public class B extends A<Object> {
+ void foo() {
+ if (t == null) return;
+ if (list == null) return;
+ System.out.println(t);
+ for (Object s : list) {
+ //do nothing
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java
new file mode 100644
index 000000000000..98b178156750
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java
@@ -0,0 +1,4 @@
+import java.util.List;
+class ListTypeArguments implements List<I<caret>nteger> {
+ public boolean add(Integer o){return true;}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java.after
new file mode 100644
index 000000000000..535acf216d57
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ListTypeArguments.java.after
@@ -0,0 +1,4 @@
+import java.util.List;
+class ListTypeArguments implements List<Object> {
+ public boolean add(Object o){return true;}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java b/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java
new file mode 100644
index 000000000000..8183831c3ff3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java
@@ -0,0 +1,16 @@
+class Test {
+ interface A<T> {
+ T foo();
+ }
+
+ class B implements A<Stri<caret>ng> {
+ public String foo() {
+ return null;
+ }
+
+ public void bar() {
+ String s = foo();
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java.after
new file mode 100644
index 000000000000..405cd8a74384
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/MethodReturnTypeMigration.java.after
@@ -0,0 +1,16 @@
+class Test {
+ interface A<T> {
+ T foo();
+ }
+
+ class B implements A<Integer> {
+ public Integer foo() {
+ return null;
+ }
+
+ public void bar() {
+ Integer s = foo();
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java
new file mode 100644
index 000000000000..fdce63b995a8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java
@@ -0,0 +1,29 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){}
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Strin<caret>g> {
+ void foo(String s) {
+ f(s);
+ }
+
+ public void main() {
+ for (String integer : l) {
+
+ }
+ }
+
+ void bar(Map<String, String> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java.after
new file mode 100644
index 000000000000..ff031aa42904
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration.java.after
@@ -0,0 +1,29 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){}
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Object> {
+ void foo(String s) {
+ f(s);
+ }
+
+ public void main() {
+ for (Object integer : l) {
+
+ }
+ }
+
+ void bar(Map<Object, Object> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java
new file mode 100644
index 000000000000..fdce63b995a8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java
@@ -0,0 +1,29 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){}
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Strin<caret>g> {
+ void foo(String s) {
+ f(s);
+ }
+
+ public void main() {
+ for (String integer : l) {
+
+ }
+ }
+
+ void bar(Map<String, String> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java.after
new file mode 100644
index 000000000000..f3cef5b65bba
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration1.java.after
@@ -0,0 +1,29 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){}
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Integer> {
+ void foo(Integer s) {
+ f(s);
+ }
+
+ public void main() {
+ for (Integer integer : l) {
+
+ }
+ }
+
+ void bar(Map<Integer, Integer> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java
new file mode 100644
index 000000000000..278b80eb95d5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java
@@ -0,0 +1,31 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){
+ for (T t1 : t.keySet()) {}
+ }
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Strin<caret>g> {
+ void foo(String s) {
+ f(s);
+ }
+
+ public void main() {
+ for (String integer : l) {
+
+ }
+ }
+
+ void bar(Map<String, String> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java.after
new file mode 100644
index 000000000000..5978a88ee283
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ParameterMigration2.java.after
@@ -0,0 +1,31 @@
+import java.util.*;
+
+class Test {
+ class C<T> {
+ List<T> l;
+
+ void bar(Map<T, T> t){
+ for (T t1 : t.keySet()) {}
+ }
+
+ void f(T t){}
+
+ }
+
+ class D extends C<Integer> {
+ void foo(Integer s) {
+ f(s);
+ }
+
+ public void main() {
+ for (Integer integer : l) {
+
+ }
+ }
+
+ void bar(Map<Integer, Integer> t) {
+ super.bar(t);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java
new file mode 100644
index 000000000000..416bf0f810b8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java
@@ -0,0 +1,16 @@
+class A<T> {
+ void foo(T t){}
+ void bar(T t, int i){}
+}
+
+class B extends A<S<caret>tring>{
+ void foo(String t) {
+ super.foo(t);
+ }
+
+ void bar(String t, int i){
+ foo(t);
+ int k = i;
+ super.bar(t, k);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java.after
new file mode 100644
index 000000000000..64847ab2afd1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter.java.after
@@ -0,0 +1,16 @@
+class A<T> {
+ void foo(T t){}
+ void bar(T t, int i){}
+}
+
+class B extends A<Object> {
+ void foo(Object t) {
+ super.foo(t);
+ }
+
+ void bar(Object t, int i){
+ foo(t);
+ int k = i;
+ super.bar(t, k);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java
new file mode 100644
index 000000000000..f9bdb275f3aa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java
@@ -0,0 +1,20 @@
+class A<T> {
+ void foo(T t){}
+ void bar(T t, int i){}
+}
+
+class B extends A<S<caret>tring>{
+ void foo(String t) {
+ super.foo(t);
+ }
+
+ void bar(String t, int i){
+ foo(t);
+ int k = i;
+ super.bar(t, k);
+ }
+
+ void bar1(String s) {
+ foo(s);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java.after
new file mode 100644
index 000000000000..1777cb6da9d8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter1.java.after
@@ -0,0 +1,20 @@
+class A<T> {
+ void foo(T t){}
+ void bar(T t, int i){}
+}
+
+class B extends A<Integer> {
+ void foo(Integer t) {
+ super.foo(t);
+ }
+
+ void bar(Integer t, int i){
+ foo(t);
+ int k = i;
+ super.bar(t, k);
+ }
+
+ void bar1(Integer s) {
+ foo(s);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java
new file mode 100644
index 000000000000..62c7cf4da263
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java
@@ -0,0 +1,12 @@
+class A<T> {
+ T bar(){}
+}
+
+class B extends A<S<caret>tring>{
+ void barInner(String s) {
+ }
+
+ void foo() {
+ barInner(bar());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java.after
new file mode 100644
index 000000000000..e5ed5910c2c1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/PassedParameter2.java.after
@@ -0,0 +1,12 @@
+class A<T> {
+ T bar(){}
+}
+
+class B extends A<Object> {
+ void barInner(Object s) {
+ }
+
+ void foo() {
+ barInner(bar());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java
new file mode 100644
index 000000000000..17960b186a46
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java
@@ -0,0 +1,14 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+class B extends A<S<caret>tring> {
+ String foo(){return null;}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java.after
new file mode 100644
index 000000000000..1758610f1571
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType.java.after
@@ -0,0 +1,14 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+class B extends A<Object> {
+ Object foo(){return null;}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java
new file mode 100644
index 000000000000..9e01a295be05
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java
@@ -0,0 +1,15 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+public class B extends A<S<caret>tring> {
+ String foo(){return null;}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ System.out.println(foo());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java.after
new file mode 100644
index 000000000000..8a584bdca610
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType1.java.after
@@ -0,0 +1,15 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+public class B extends A<Object> {
+ Object foo(){return null;}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ System.out.println(foo());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java
new file mode 100644
index 000000000000..83b7294972fc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java
@@ -0,0 +1,14 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+class B extends A<S<caret>tring> {
+ String foo(){return super.foo();}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java.after
new file mode 100644
index 000000000000..a26f7d3f1655
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/ReturnType2.java.after
@@ -0,0 +1,14 @@
+class A<T> {
+ T foo(){
+ return null;
+ }
+}
+
+class B extends A<Object> {
+ Object foo(){return super.foo();}
+
+ void bar() {
+ foo();
+ if (foo() == null) return;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java
new file mode 100644
index 000000000000..2bfa264828c0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java
@@ -0,0 +1,18 @@
+abstract class A<E> {
+ abstract E foo();
+}
+
+abstract class B<T> extends A<T> {
+}
+
+class C extends B<S<caret>tring> {
+ String foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {
+ //do smth
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java.after
new file mode 100644
index 000000000000..4c4736302857
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy.java.after
@@ -0,0 +1,18 @@
+abstract class A<E> {
+ abstract E foo();
+}
+
+abstract class B<T> extends A<T> {
+}
+
+class C extends B<Object> {
+ Object foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {
+ //do smth
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java
new file mode 100644
index 000000000000..5396a7c59422
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java
@@ -0,0 +1,19 @@
+abstract class A<E> {
+ public abstract E foo();
+}
+
+abstract class B<T> extends A<T> {
+}
+
+public class C extends B<S<caret>tring> {
+ public String foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {
+ //do smth
+ }
+ System.out.println(foo());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java.after
new file mode 100644
index 000000000000..16a02ae4ea3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy1.java.after
@@ -0,0 +1,19 @@
+abstract class A<E> {
+ public abstract E foo();
+}
+
+abstract class B<T> extends A<T> {
+}
+
+public class C extends B<Object> {
+ public Object foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {
+ //do smth
+ }
+ System.out.println(foo());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java
new file mode 100644
index 000000000000..2eb6d429915e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java
@@ -0,0 +1,18 @@
+public class Test extends B<S<caret>tring>{
+ String foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {}
+ }
+}
+
+abstract class A<T> {
+ abstract T foo();
+}
+
+abstract class B<E extends Object> extends A<E> {
+}
+
+
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java.after
new file mode 100644
index 000000000000..b30ab01e5594
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchy2.java.after
@@ -0,0 +1,18 @@
+public class Test extends B<Object> {
+ Object foo() {
+ return null;
+ }
+
+ void bar() {
+ if (foo() == null) {}
+ }
+}
+
+abstract class A<T> {
+ abstract T foo();
+}
+
+abstract class B<E extends Object> extends A<E> {
+}
+
+
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java
new file mode 100644
index 000000000000..3bf853421127
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java
@@ -0,0 +1,15 @@
+import java.util.List;
+class A<E> {
+ E e;
+ List<E> list = new List<E>();
+}
+
+class B<T> extends A<T> {}
+
+class C extends B <S<caret>tring> {
+ void foo() {
+ if (e == null && list != null) {
+ //do smth
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java.after
new file mode 100644
index 000000000000..5eeea8234a2e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsage.java.after
@@ -0,0 +1,15 @@
+import java.util.List;
+class A<E> {
+ E e;
+ List<E> list = new List<E>();
+}
+
+class B<T> extends A<T> {}
+
+class C extends B<Object> {
+ void foo() {
+ if (e == null && list != null) {
+ //do smth
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java
new file mode 100644
index 000000000000..bf9237fe6fb3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java
@@ -0,0 +1,16 @@
+import java.util.List;
+class A<E> {
+ E e;
+ List<E> list = new List<E>();
+}
+
+class B<T> extends A<T> {}
+
+class C extends B <S<caret>tring> {
+ void foo() {
+ if (e == null && list != null) {
+ for (String s : list) {
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java.after
new file mode 100644
index 000000000000..ffecf75c7f20
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/TypeHierarchyFieldUsageConflict.java.after
@@ -0,0 +1,16 @@
+import java.util.List;
+class A<E> {
+ E e;
+ List<E> list = new List<E>();
+}
+
+class B<T> extends A<T> {}
+
+class C extends B<Object> {
+ void foo() {
+ if (e == null && list != null) {
+ for (Object s : list) {
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java b/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java
new file mode 100644
index 000000000000..4cbee666c3cb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java
@@ -0,0 +1,9 @@
+class A<T> {
+ T foo(){return null;}
+ T bar(){return foo();}
+}
+
+class B extends A<S<caret>tring> {
+ String foo(){return super.bar();}
+ String bar(){return super.foo();}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java.after b/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java.after
new file mode 100644
index 000000000000..d321e6520dc0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/changeTypeSignature/UsedInSuper.java.after
@@ -0,0 +1,9 @@
+class A<T> {
+ T foo(){return null;}
+ T bar(){return foo();}
+}
+
+class B extends A<Object> {
+ Object foo(){return super.bar();}
+ Object bar(){return super.foo();}
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.items
new file mode 100644
index 000000000000..7ce904f6afe4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.items
@@ -0,0 +1,33 @@
+Types:
+PsiField:myForAccess : ClassParent
+PsiLocalVariable:vf : ClassParent
+PsiLocalVariable:vfcthis : ClassParent
+PsiLocalVariable:vfnew : ClassParent
+PsiLocalVariable:vfparen : ClassParent
+PsiLocalVariable:vfthis : ClassParent
+PsiLocalVariable:vm : ClassParent
+PsiLocalVariable:vmcthis : ClassParent
+PsiLocalVariable:vmnew : ClassParent
+PsiLocalVariable:vmparen : ClassParent
+PsiLocalVariable:vmthis : ClassParent
+PsiMethod:forAccess : ClassParent
+PsiMethodCallExpression:(this).forAccess() : ClassParent
+PsiMethodCallExpression:Expr.this.forAccess() : ClassParent
+PsiMethodCallExpression:forAccess() : ClassParent
+PsiMethodCallExpression:forAccess() : ClassParent
+PsiMethodCallExpression:forAccess() : ClassParent
+PsiMethodCallExpression:new Expr().forAccess() : ClassParent
+PsiMethodCallExpression:this.forAccess() : ClassParent
+PsiReferenceExpression:(this).myForAccess : ClassParent
+PsiReferenceExpression:Expr.this.myForAccess : ClassParent
+PsiReferenceExpression:myForAccess : ClassParent
+PsiReferenceExpression:myForAccess : ClassParent
+PsiReferenceExpression:new Expr().myForAccess : ClassParent
+PsiReferenceExpression:this.myForAccess : ClassParent
+
+Conversions:
+
+New expression type changes:
+Fails:
+forAccess()->ClassParent
+forAccess()->ClassParent
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..65fd52a3e86e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/after/Expr.java
@@ -0,0 +1,35 @@
+class ClassParent {}
+class ClassChild extends ClassParent {
+ public void forAccess2() {
+ }
+
+ public int myForAccess;
+}
+class ClassGrandChild extends ClassChild {}
+
+class Expr {
+ public ClassParent myForAccess;
+ public ClassParent forAccess() {
+ return myForAccess;
+ }
+
+ public void methMemAcc() {
+ ClassParent vf = myForAccess;
+ ClassParent vm = forAccess();
+
+ ClassParent vfthis = this.myForAccess;
+ ClassParent vmthis = this.forAccess();
+
+ ClassParent vfcthis = Expr.this.myForAccess;
+ ClassParent vmcthis = Expr.this.forAccess();
+
+ ClassParent vfparen = (this).myForAccess;
+ ClassParent vmparen = (this).forAccess();
+
+ ClassParent vfnew = new Expr().myForAccess;
+ ClassParent vmnew = new Expr().forAccess();
+
+ int v = forAccess().myForAccess;
+ forAccess().forAccess2();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..1c13032fa121
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Lvalue/before/Expr.java
@@ -0,0 +1,35 @@
+class ClassParent {}
+class ClassChild extends ClassParent {
+ public void forAccess2() {
+ }
+
+ public int myForAccess;
+}
+class ClassGrandChild extends ClassChild {}
+
+class Expr {
+ public ClassChild myForAccess;
+ public ClassChild forAccess() {
+ return myForAccess;
+ }
+
+ public void methMemAcc() {
+ ClassChild vf = myForAccess;
+ ClassChild vm = forAccess();
+
+ ClassChild vfthis = this.myForAccess;
+ ClassChild vmthis = this.forAccess();
+
+ ClassChild vfcthis = Expr.this.myForAccess;
+ ClassChild vmcthis = Expr.this.forAccess();
+
+ ClassChild vfparen = (this).myForAccess;
+ ClassChild vmparen = (this).forAccess();
+
+ ClassChild vfnew = new Expr().myForAccess;
+ ClassChild vmnew = new Expr().forAccess();
+
+ int v = forAccess().myForAccess;
+ forAccess().forAccess2();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..d79df57fc220
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.items
@@ -0,0 +1,37 @@
+Types:
+PsiField:myField : ClassGrandChild
+PsiField:myForAccess1 : ClassGrandChild
+PsiField:myForAccess2 : ClassGrandChild
+PsiField:myForAccess3 : ClassGrandChild
+PsiField:myForAccess4 : ClassGrandChild
+PsiField:myForAccess5 : ClassGrandChild
+PsiMethod:forAccess1 : ClassGrandChild
+PsiMethod:forAccess2 : ClassGrandChild
+PsiMethod:forAccess3 : ClassGrandChild
+PsiMethod:forAccess4 : ClassGrandChild
+PsiMethod:forAccess5 : ClassGrandChild
+PsiMethodCallExpression:(this).forAccess4() : ClassGrandChild
+PsiMethodCallExpression:Expr.this.forAccess3() : ClassGrandChild
+PsiMethodCallExpression:forAccess1() : ClassGrandChild
+PsiMethodCallExpression:new Expr().forAccess5() : ClassGrandChild
+PsiMethodCallExpression:this.forAccess2() : ClassGrandChild
+PsiReferenceExpression:(this).myForAccess4 : ClassGrandChild
+PsiReferenceExpression:Expr.this.myForAccess3 : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myForAccess1 : ClassGrandChild
+PsiReferenceExpression:new Expr().myForAccess5 : ClassGrandChild
+PsiReferenceExpression:this.myForAccess2 : ClassGrandChild
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..11599a2cd3a6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/after/Expr.java
@@ -0,0 +1,54 @@
+class ClassParent {}
+class ClassChild extends ClassParent {
+ public void forAccess2() {
+ }
+
+ public int myForAccess;
+}
+class ClassGrandChild extends ClassChild {}
+
+class Expr {
+ private ClassGrandChild myField;
+
+ public ClassGrandChild myForAccess1;
+ public ClassGrandChild forAccess1() {
+ return null;
+ }
+
+ public ClassGrandChild myForAccess2;
+ public ClassGrandChild forAccess2() {
+ return null;
+ }
+
+ public ClassGrandChild myForAccess3;
+ public ClassGrandChild forAccess3() {
+ return null;
+ }
+
+ public ClassGrandChild myForAccess4;
+ public ClassGrandChild forAccess4() {
+ return null;
+ }
+
+ public ClassGrandChild myForAccess5;
+ public ClassGrandChild forAccess5() {
+ return null;
+ }
+
+ public void methMemAcc() {
+ myField = myForAccess1;
+ myField = forAccess1();
+
+ myField = this.myForAccess2;
+ myField = this.forAccess2();
+
+ myField = Expr.this.myForAccess3;
+ myField = Expr.this.forAccess3();
+
+ myField = (this).myForAccess4;
+ myField = (this).forAccess4();
+
+ myField = new Expr().myForAccess5;
+ myField = new Expr().forAccess5();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..64998cf198c8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccess2Rvalue/before/Expr.java
@@ -0,0 +1,54 @@
+class ClassParent {}
+class ClassChild extends ClassParent {
+ public void forAccess2() {
+ }
+
+ public int myForAccess;
+}
+class ClassGrandChild extends ClassChild {}
+
+class Expr {
+ private ClassChild myField;
+
+ public ClassChild myForAccess1;
+ public ClassChild forAccess1() {
+ return null;
+ }
+
+ public ClassChild myForAccess2;
+ public ClassChild forAccess2() {
+ return null;
+ }
+
+ public ClassChild myForAccess3;
+ public ClassChild forAccess3() {
+ return null;
+ }
+
+ public ClassChild myForAccess4;
+ public ClassChild forAccess4() {
+ return null;
+ }
+
+ public ClassChild myForAccess5;
+ public ClassChild forAccess5() {
+ return null;
+ }
+
+ public void methMemAcc() {
+ myField = myForAccess1;
+ myField = forAccess1();
+
+ myField = this.myForAccess2;
+ myField = this.forAccess2();
+
+ myField = Expr.this.myForAccess3;
+ myField = Expr.this.forAccess3();
+
+ myField = (this).myForAccess4;
+ myField = (this).forAccess4();
+
+ myField = new Expr().myForAccess5;
+ myField = new Expr().forAccess5();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Ession.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Ession.items
new file mode 100644
index 000000000000..15e80380b536
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Ession.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myForSuperAccess : ClassParent
+PsiLocalVariable:vfcsuper : ClassParent
+PsiLocalVariable:vfsuper : ClassParent
+PsiLocalVariable:vmcsuper : ClassParent
+PsiLocalVariable:vmsuper : ClassParent
+PsiMethod:forSuperAccess : ClassParent
+PsiMethodCallExpression:Expr.super.forSuperAccess() : ClassParent
+PsiMethodCallExpression:super.forSuperAccess() : ClassParent
+PsiReferenceExpression:Expr.super.myForSuperAccess : ClassParent
+PsiReferenceExpression:myForSuperAccess : ClassParent
+PsiReferenceExpression:super.myForSuperAccess : ClassParent
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..3a9531d8f9d8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/after/Expr.java
@@ -0,0 +1,20 @@
+class ClassParent {}
+class ClassChild extends ClassParent {}
+class ClassGrandChild extends ClassChild {}
+
+class Ession {
+ public ClassParent myForSuperAccess;
+ public ClassParent forSuperAccess() {
+ return myForSuperAccess;
+ }
+}
+
+class Expr extends Ession {
+ public void methMemAcc() {
+ ClassParent vfsuper = super.myForSuperAccess;
+ ClassParent vmsuper = super.forSuperAccess();
+
+ ClassParent vfcsuper = Expr.super.myForSuperAccess;
+ ClassParent vmcsuper = Expr.super.forSuperAccess();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..898b41a6ab6f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Lvalue/before/Expr.java
@@ -0,0 +1,20 @@
+class ClassParent {}
+class ClassChild extends ClassParent {}
+class ClassGrandChild extends ClassChild {}
+
+class Ession {
+ public ClassChild myForSuperAccess;
+ public ClassChild forSuperAccess() {
+ return myForSuperAccess;
+ }
+}
+
+class Expr extends Ession {
+ public void methMemAcc() {
+ ClassChild vfsuper = super.myForSuperAccess;
+ ClassChild vmsuper = super.forSuperAccess();
+
+ ClassChild vfcsuper = Expr.super.myForSuperAccess;
+ ClassChild vmcsuper = Expr.super.forSuperAccess();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..95bf149e7b68
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.items
@@ -0,0 +1,19 @@
+Types:
+PsiField:myField : ClassGrandChild
+PsiField:myForSuperAccess1 : ClassGrandChild
+PsiField:myForSuperAccess2 : ClassGrandChild
+PsiMethod:forSuperAccess1 : ClassGrandChild
+PsiMethod:forSuperAccess2 : ClassGrandChild
+PsiMethodCallExpression:Expr.super.forSuperAccess2() : ClassGrandChild
+PsiMethodCallExpression:super.forSuperAccess1() : ClassGrandChild
+PsiReferenceExpression:Expr.super.myForSuperAccess2 : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:myField : ClassGrandChild
+PsiReferenceExpression:super.myForSuperAccess1 : ClassGrandChild
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..9ffe2e3a7332
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/after/Expr.java
@@ -0,0 +1,26 @@
+class ClassParent {}
+class ClassChild extends ClassParent {}
+class ClassGrandChild extends ClassChild {}
+
+class Ession {
+ public ClassGrandChild myForSuperAccess1;
+ public ClassGrandChild forSuperAccess1() {
+ return null;
+ }
+
+ public ClassGrandChild myForSuperAccess2;
+ public ClassGrandChild forSuperAccess2() {
+ return null;
+ }
+}
+
+class Expr extends Ession {
+ private ClassGrandChild myField;
+ public void methMemAcc() {
+ myField = super.myForSuperAccess1;
+ myField = super.forSuperAccess1();
+
+ myField = Expr.super.myForSuperAccess2;
+ myField = Expr.super.forSuperAccess2();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..0a244c6448bd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprAccessParent2Rvalue/before/Expr.java
@@ -0,0 +1,26 @@
+class ClassParent {}
+class ClassChild extends ClassParent {}
+class ClassGrandChild extends ClassChild {}
+
+class Ession {
+ public ClassChild myForSuperAccess1;
+ public ClassChild forSuperAccess1() {
+ return null;
+ }
+
+ public ClassChild myForSuperAccess2;
+ public ClassChild forSuperAccess2() {
+ return null;
+ }
+}
+
+class Expr extends Ession {
+ private ClassChild myField;
+ public void methMemAcc() {
+ myField = super.myForSuperAccess1;
+ myField = super.forSuperAccess1();
+
+ myField = Expr.super.myForSuperAccess2;
+ myField = Expr.super.forSuperAccess2();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.items
new file mode 100644
index 000000000000..0f10ca83564b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : double
+PsiReferenceExpression:p : double
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->double
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.java
new file mode 100644
index 000000000000..9258f512d2b1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/after/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ public void meth(double p) {
+ String[] sa = new String[]{"0", "1"};
+ String s = sa[p];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/before/Expr.java
new file mode 100644
index 000000000000..57fde1c6b34c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessNegative/before/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ public void meth(int p) {
+ String[] sa = new String[]{"0", "1"};
+ String s = sa[p];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.items
new file mode 100644
index 000000000000..afc565fc6df7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : char
+PsiReferenceExpression:p : char
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.java
new file mode 100644
index 000000000000..7971b5e9e770
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/after/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ public void meth(char p) {
+ String[] sa = new String[]{"0", "1"};
+ String s = sa[p];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/before/Expr.java
new file mode 100644
index 000000000000..57fde1c6b34c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprArrayAccessPositive/before/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ public void meth(int p) {
+ String[] sa = new String[]{"0", "1"};
+ String s = sa[p];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.items
new file mode 100644
index 000000000000..4e6bf57cbb3e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.items
@@ -0,0 +1,30 @@
+Types:
+PsiLocalVariable:vba : int
+PsiLocalVariable:vbb : int
+PsiLocalVariable:vbc : int
+PsiParameter:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+PsiReferenceExpression:pb : int
+
+Conversions:
+
+New expression type changes:
+Fails:
+pb->int
+pb->int
+pb->int
+pb->int
+pb->int
+pb->int
+pb->int
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.java
new file mode 100644
index 000000000000..d0dd0e83a559
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/after/Expr.java
@@ -0,0 +1,16 @@
+class Expr {
+ public void meth(int pb) {
+ int vba = pb & pb;
+ int vbb = pb ^ pb;
+ int vbc = pb | pb;
+ boolean vbd = pb && pb;
+ boolean vbe = pb || pb;
+
+ boolean vn1 = false;
+ vn1 &= pb;
+ boolean vn2 = false;
+ vn2 ^= pb;
+ boolean vn3 = false;
+ vn3 |= pb;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/before/Expr.java
new file mode 100644
index 000000000000..d0364a40ca25
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanBoolean/before/Expr.java
@@ -0,0 +1,16 @@
+class Expr {
+ public void meth(boolean pb) {
+ boolean vba = pb & pb;
+ boolean vbb = pb ^ pb;
+ boolean vbc = pb | pb;
+ boolean vbd = pb && pb;
+ boolean vbe = pb || pb;
+
+ boolean vn1 = false;
+ vn1 &= pb;
+ boolean vn2 = false;
+ vn2 ^= pb;
+ boolean vn3 = false;
+ vn3 |= pb;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.items
new file mode 100644
index 000000000000..21ecfb0d65a5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.items
@@ -0,0 +1,19 @@
+Types:
+PsiParameter:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+PsiReferenceExpression:pi : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
+pi->java.lang.Object
+pi->java.lang.Object
+pi->java.lang.Object
+pi->java.lang.Object
+pi->java.lang.Object
+pi->java.lang.Object
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.java
new file mode 100644
index 000000000000..c54d809c3906
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/after/Expr.java
@@ -0,0 +1,10 @@
+class Expr {
+ public void meth(Object pi) {
+ boolean vb1 = pi > 0;
+ boolean vb2 = pi >= 0;
+ boolean vb3 = pi < 0;
+ boolean vb4 = pi <= 0;
+ boolean vb6 = pi == 0;
+ boolean vb7 = pi != 0;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/before/Expr.java
new file mode 100644
index 000000000000..1b113b43a3e6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanNumeric/before/Expr.java
@@ -0,0 +1,10 @@
+class Expr {
+ public void meth(int pi) {
+ boolean vb1 = pi > 0;
+ boolean vb2 = pi >= 0;
+ boolean vb3 = pi < 0;
+ boolean vb4 = pi <= 0;
+ boolean vb6 = pi == 0;
+ boolean vb7 = pi != 0;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.items
new file mode 100644
index 000000000000..815d62ca7530
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:ps : double
+PsiReferenceExpression:ps : double
+PsiReferenceExpression:ps : double
+PsiReferenceExpression:ps : double
+PsiReferenceExpression:ps : double
+
+Conversions:
+
+New expression type changes:
+Fails:
+ps->double
+ps->double
+ps->double
+ps->double
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.java
new file mode 100644
index 000000000000..bc4c04967759
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/after/Expr.java
@@ -0,0 +1,8 @@
+class Expr {
+ public void meth(double ps) {
+ boolean vb5 = ps instanceof CharSequence;
+ boolean vb8 = ps == "string";
+ boolean vb9 = ps != "string";
+ boolean vbf = (1 >= 0) && (ps instanceof CharSequence);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/before/Expr.java
new file mode 100644
index 000000000000..6def87eb9709
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcBooleanReference/before/Expr.java
@@ -0,0 +1,8 @@
+class Expr {
+ public void meth(String ps) {
+ boolean vb5 = ps instanceof CharSequence;
+ boolean vb8 = ps == "string";
+ boolean vb9 = ps != "string";
+ boolean vbf = (1 >= 0) && (ps instanceof CharSequence);
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.items
new file mode 100644
index 000000000000..aeddc71515d9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.items
@@ -0,0 +1,58 @@
+Types:
+PsiLocalVariable:vb9 : boolean
+PsiLocalVariable:vba : boolean
+PsiLocalVariable:vbb : boolean
+PsiParameter:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+PsiReferenceExpression:p : boolean
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
+p->boolean
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.java
new file mode 100644
index 000000000000..c90c55120370
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/after/Expr.java
@@ -0,0 +1,35 @@
+class Expr {
+ public void meth(boolean p) {
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ int vb4 = p + p;
+ int vb5 = p - p;
+ boolean vb9 = p & p;
+ boolean vba = p ^ p;
+ boolean vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ int vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/before/Expr.java
new file mode 100644
index 000000000000..057b284248a0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Boolean/before/Expr.java
@@ -0,0 +1,35 @@
+class Expr {
+ public void meth(int p) {
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ int vb4 = p + p;
+ int vb5 = p - p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ int vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.items
new file mode 100644
index 000000000000..0fdb9d1291e9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.items
@@ -0,0 +1,78 @@
+Types:
+PsiLocalVariable:vb1 : float
+PsiLocalVariable:vb2 : float
+PsiLocalVariable:vb3 : float
+PsiLocalVariable:vb4 : float
+PsiLocalVariable:vb5 : float
+PsiLocalVariable:vn1 : float
+PsiLocalVariable:vn2 : float
+PsiLocalVariable:vn3 : float
+PsiLocalVariable:vn4 : float
+PsiLocalVariable:vn5 : float
+PsiLocalVariable:vu1 : float
+PsiLocalVariable:vu2 : float
+PsiLocalVariable:vu3 : float
+PsiLocalVariable:vu4 : float
+PsiLocalVariable:vu5 : float
+PsiLocalVariable:vu6 : float
+PsiParameter:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:vn1 : float
+PsiReferenceExpression:vn2 : float
+PsiReferenceExpression:vn3 : float
+PsiReferenceExpression:vn4 : float
+PsiReferenceExpression:vn5 : float
+
+Conversions:
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+
+New expression type changes:
+Fails:
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
+p->float
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.java
new file mode 100644
index 000000000000..8e16d5b5d974
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/after/Expr.java
@@ -0,0 +1,42 @@
+class Expr {
+ public void meth(float p) {
+ float vu1 = p++;
+ float vu2 = p--;
+ float vu3 = ++p;
+ float vu4 = --p;
+ float vu5 = -p;
+ float vu6 = +p;
+
+ float vb1 = p * p;
+ float vb2 = p / p;
+ float vb3 = p % p;
+ float vb4 = p + p;
+ float vb5 = p - p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ float vn1 = 0;
+ vn1 *= p;
+ float vn2 = 0;
+ vn2 /= p;
+ float vn3 = 0;
+ vn3 %= p;
+ float vn4 = 0;
+ vn4 += p;
+ float vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/before/Expr.java
new file mode 100644
index 000000000000..4088b28a0060
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Floating/before/Expr.java
@@ -0,0 +1,42 @@
+class Expr {
+ public void meth(int p) {
+ int vu1 = p++;
+ int vu2 = p--;
+ int vu3 = ++p;
+ int vu4 = --p;
+ int vu5 = -p;
+ int vu6 = +p;
+
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ int vb4 = p + p;
+ int vb5 = p - p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ int vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.items
new file mode 100644
index 000000000000..36e79ff677b4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.items
@@ -0,0 +1,98 @@
+Types:
+PsiLocalVariable:vb1 : long
+PsiLocalVariable:vb2 : long
+PsiLocalVariable:vb3 : long
+PsiLocalVariable:vb4 : long
+PsiLocalVariable:vb5 : long
+PsiLocalVariable:vb6 : long
+PsiLocalVariable:vb7 : long
+PsiLocalVariable:vb8 : long
+PsiLocalVariable:vb9 : long
+PsiLocalVariable:vba : long
+PsiLocalVariable:vbb : long
+PsiLocalVariable:vn1 : long
+PsiLocalVariable:vn2 : long
+PsiLocalVariable:vn3 : long
+PsiLocalVariable:vn4 : long
+PsiLocalVariable:vn5 : long
+PsiLocalVariable:vn6 : long
+PsiLocalVariable:vn7 : long
+PsiLocalVariable:vn8 : long
+PsiLocalVariable:vn9 : long
+PsiLocalVariable:vna : long
+PsiLocalVariable:vnb : long
+PsiLocalVariable:vu1 : long
+PsiLocalVariable:vu2 : long
+PsiLocalVariable:vu3 : long
+PsiLocalVariable:vu4 : long
+PsiLocalVariable:vu5 : long
+PsiLocalVariable:vu6 : long
+PsiLocalVariable:vu7 : long
+PsiParameter:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:vn1 : long
+PsiReferenceExpression:vn2 : long
+PsiReferenceExpression:vn3 : long
+PsiReferenceExpression:vn4 : long
+PsiReferenceExpression:vn5 : long
+PsiReferenceExpression:vn6 : long
+PsiReferenceExpression:vn7 : long
+PsiReferenceExpression:vn8 : long
+PsiReferenceExpression:vn9 : long
+PsiReferenceExpression:vna : long
+PsiReferenceExpression:vnb : long
+
+Conversions:
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+0 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.java
new file mode 100644
index 000000000000..323dad23d5d3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/after/Expr.java
@@ -0,0 +1,46 @@
+class Expr {
+ public void meth(long p) {
+ long vu1 = p++;
+ long vu2 = p--;
+ long vu3 = ++p;
+ long vu4 = --p;
+ long vu5 = -p;
+ long vu6 = +p;
+ long vu7 = ~p;
+
+ long vb1 = p * p;
+ long vb2 = p / p;
+ long vb3 = p % p;
+ long vb4 = p + p;
+ long vb5 = p - p;
+ long vb6 = p << p;
+ long vb7 = p >> p;
+ long vb8 = p >>> p;
+ long vb9 = p & p;
+ long vba = p ^ p;
+ long vbb = p | p;
+
+ long vn1 = 0;
+ vn1 *= p;
+ long vn2 = 0;
+ vn2 /= p;
+ long vn3 = 0;
+ vn3 %= p;
+ long vn4 = 0;
+ vn4 += p;
+ long vn5 = 0;
+ vn5 -= p;
+ long vn6 = 0;
+ vn6 <<= p;
+ long vn7 = 0;
+ vn7 >>= p;
+ long vn8 = 0;
+ vn8 >>>= p;
+ long vn9 = 0;
+ vn9 &= p;
+ long vna = 0;
+ vna ^= p;
+ long vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/before/Expr.java
new file mode 100644
index 000000000000..716f4b7e60e1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2Int/before/Expr.java
@@ -0,0 +1,46 @@
+class Expr {
+ public void meth(int p) {
+ int vu1 = p++;
+ int vu2 = p--;
+ int vu3 = ++p;
+ int vu4 = --p;
+ int vu5 = -p;
+ int vu6 = +p;
+ int vu7 = ~p;
+
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ int vb4 = p + p;
+ int vb5 = p - p;
+ int vb6 = p << p;
+ int vb7 = p >> p;
+ int vb8 = p >>> p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ int vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.items
new file mode 100644
index 000000000000..406008949bd1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.items
@@ -0,0 +1,62 @@
+Types:
+PsiLocalVariable:vb4 : java.lang.String
+PsiLocalVariable:vn4 : java.lang.String
+PsiParameter:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+PsiReferenceExpression:vn4 : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+0->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
+p->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.java
new file mode 100644
index 000000000000..62fd2ff0b0ff
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/after/Expr.java
@@ -0,0 +1,35 @@
+class Expr {
+ public void meth(String p) {
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ String vb4 = p + p;
+ int vb5 = p - p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ String vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/before/Expr.java
new file mode 100644
index 000000000000..057b284248a0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCalcNumeric2String/before/Expr.java
@@ -0,0 +1,35 @@
+class Expr {
+ public void meth(int p) {
+ int vb1 = p * p;
+ int vb2 = p / p;
+ int vb3 = p % p;
+ int vb4 = p + p;
+ int vb5 = p - p;
+ int vb9 = p & p;
+ int vba = p ^ p;
+ int vbb = p | p;
+
+ int vn1 = 0;
+ vn1 *= p;
+ int vn2 = 0;
+ vn2 /= p;
+ int vn3 = 0;
+ vn3 %= p;
+ int vn4 = 0;
+ vn4 += p;
+ int vn5 = 0;
+ vn5 -= p;
+ int vn6 = 0;
+ vn6 <<= p;
+ int vn7 = 0;
+ vn7 >>= p;
+ int vn8 = 0;
+ vn8 >>>= p;
+ int vn9 = 0;
+ vn9 &= p;
+ int vna = 0;
+ vna ^= p;
+ int vnb = 0;
+ vnb |= p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.items
new file mode 100644
index 000000000000..01f325b2852d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+(short) p->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.java
new file mode 100644
index 000000000000..5a7343152288
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/after/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(String p) {
+ short v = (short) p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/before/Expr.java
new file mode 100644
index 000000000000..e3519b4bb4bf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvalueNeg/before/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(byte p) {
+ short v = (short) p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.items
new file mode 100644
index 000000000000..f69d09024863
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : int
+PsiReferenceExpression:p : int
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.java
new file mode 100644
index 000000000000..64aecc896b80
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/after/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(int p) {
+ short v = (short) p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/before/Expr.java
new file mode 100644
index 000000000000..e3519b4bb4bf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprCast2LvaluePos/before/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(byte p) {
+ short v = (short) p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.items
new file mode 100644
index 000000000000..0b73994dece5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:pns : java.lang.Object
+PsiReferenceExpression:pns : java.lang.Object
+PsiReferenceExpression:pns : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.java
new file mode 100644
index 000000000000..cf844f4eddf2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/after/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(Object pns, String ps) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/before/Expr.java
new file mode 100644
index 000000000000..71b89f955e59
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2Reference/before/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(int pns, String ps) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.items
new file mode 100644
index 000000000000..46d6b1f5a15f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:pns : java.lang.String
+PsiReferenceExpression:pns : java.lang.String
+PsiReferenceExpression:pns : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.java
new file mode 100644
index 000000000000..5ce2b795d268
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/after/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(String pns, String ps) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/before/Expr.java
new file mode 100644
index 000000000000..71b89f955e59
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatNumeric2String/before/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(int pns, String ps) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.items
new file mode 100644
index 000000000000..3bb9c1ebf19a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myString : int
+PsiParameter:ps : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:ps : int
+PsiReferenceExpression:ps : int
+PsiReferenceExpression:ps : int
+PsiReferenceExpression:ps : int
+PsiReferenceExpression:ps : int
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.java
new file mode 100644
index 000000000000..ac05959f3c08
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/after/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private int myString;
+ public void meth(int ps, int pns) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/before/Expr.java
new file mode 100644
index 000000000000..bb57398b961c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Numeric/before/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(String ps, int pns) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.items
new file mode 100644
index 000000000000..302e3c9da48c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.items
@@ -0,0 +1,23 @@
+Types:
+PsiField:myString : int
+PsiParameter:ps : java.lang.Object
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:myString : int
+PsiReferenceExpression:ps : java.lang.Object
+PsiReferenceExpression:ps : java.lang.Object
+PsiReferenceExpression:ps : java.lang.Object
+PsiReferenceExpression:ps : java.lang.Object
+PsiReferenceExpression:ps : java.lang.Object
+
+Conversions:
+
+New expression type changes:
+Fails:
+myString->int
+ps->java.lang.Object
+ps->java.lang.Object
+ps->java.lang.Object
+ps->java.lang.Object
+ps->java.lang.Object
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.java
new file mode 100644
index 000000000000..c23893bd5b63
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/after/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private int myString;
+ public void meth(Object ps, int pns) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/before/Expr.java
new file mode 100644
index 000000000000..bb57398b961c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprConcatString2Reference/before/Expr.java
@@ -0,0 +1,9 @@
+class Expr {
+ private String myString;
+ public void meth(String ps, int pns) {
+ myString = ps + ps;
+ myString = ps + pns;
+ myString = pns + ps;
+ myString += ps;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.items
new file mode 100644
index 000000000000..7712b490ec9a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.List
+PsiReferenceExpression:p : java.util.List
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->java.util.List
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.java
new file mode 100644
index 000000000000..93da179e0c37
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/after/Expr.java
@@ -0,0 +1,9 @@
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+class Expr {
+ public void meth(List p) {
+ boolean b = p instanceof HashSet;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/before/Expr.java
new file mode 100644
index 000000000000..72af0a04ab0b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofNeg/before/Expr.java
@@ -0,0 +1,9 @@
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+class Expr {
+ public void meth(Set p) {
+ boolean b = p instanceof HashSet;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.items
new file mode 100644
index 000000000000..5b608c5c0b1a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : java.util.AbstractMap
+PsiReferenceExpression:p : java.util.AbstractMap
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.java
new file mode 100644
index 000000000000..e7f8a225bd9e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/after/Expr.java
@@ -0,0 +1,9 @@
+import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.Map;
+
+class Expr {
+ public void meth(AbstractMap p) {
+ boolean b = p instanceof HashMap;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/before/Expr.java
new file mode 100644
index 000000000000..fa8ab953a084
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprInstanceofPos/before/Expr.java
@@ -0,0 +1,9 @@
+import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.Map;
+
+class Expr {
+ public void meth(Map p) {
+ boolean b = p instanceof HashMap;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.items
new file mode 100644
index 000000000000..b446d1101a06
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.items
@@ -0,0 +1,35 @@
+Types:
+PsiField:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:myField : boolean
+
+Conversions:
+
+New expression type changes:
+Fails:
+"#"->boolean
+'#'->boolean
+043->boolean
+043F->boolean
+043L->boolean
+0x23->boolean
+0x23F->boolean
+0x23L->boolean
+35->boolean
+35.0->boolean
+35F->boolean
+35L->boolean
+null->boolean
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.java
new file mode 100644
index 000000000000..d0d0a2d12326
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private boolean myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralBoolean/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.items
new file mode 100644
index 000000000000..efc0c3bb0c41
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.items
@@ -0,0 +1,37 @@
+Types:
+PsiField:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
+"#"->byte
+'#'->byte
+043->byte
+043F->byte
+043L->byte
+0x23->byte
+0x23F->byte
+0x23L->byte
+35->byte
+35.0->byte
+35F->byte
+35L->byte
+false->byte
+null->byte
+true->byte
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.java
new file mode 100644
index 000000000000..6288f06f450a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private byte myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralByte/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.items
new file mode 100644
index 000000000000..62960ffeacf8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.items
@@ -0,0 +1,36 @@
+Types:
+PsiField:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+
+Conversions:
+
+New expression type changes:
+Fails:
+"#"->char
+043->char
+043F->char
+043L->char
+0x23->char
+0x23F->char
+0x23L->char
+35->char
+35.0->char
+35F->char
+35L->char
+false->char
+null->char
+true->char
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.java
new file mode 100644
index 000000000000..eab5b7cf5059
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private char myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralChar/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.items
new file mode 100644
index 000000000000..2a1f903ca5ab
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myField : java.lang.Class<? extends java.util.Collection[]>
+PsiReferenceExpression:myField : java.lang.Class<? extends java.util.Collection[]>
+PsiReferenceExpression:myField : java.lang.Class<? extends java.util.Collection[]>
+PsiReferenceExpression:myField : java.lang.Class<? extends java.util.Collection[]>
+PsiReferenceExpression:myField : java.lang.Class<? extends java.util.Collection[]>
+PsiReferenceExpression:myField : java.lang.Class<? extends java.util.Collection[]>
+
+Conversions:
+Set[].class -> $
+
+New expression type changes:
+Fails:
+Set.class->java.lang.Class<? extends java.util.Collection[]>
+int.class->java.lang.Class<? extends java.util.Collection[]>
+int[].class->java.lang.Class<? extends java.util.Collection[]>
+void.class->java.lang.Class<? extends java.util.Collection[]>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.java
new file mode 100644
index 000000000000..a9f761e2bd1f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/after/Expr.java
@@ -0,0 +1,13 @@
+import java.util.Collection;
+import java.util.Set;
+
+class Expr {
+ private Class<? extends Collection[]> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/before/Expr.java
new file mode 100644
index 000000000000..202ef9ef2da6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassExtends/before/Expr.java
@@ -0,0 +1,13 @@
+import java.util.Collection;
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.items
new file mode 100644
index 000000000000..485a0f5d91a4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : java.lang.Class<java.lang.Integer>
+PsiReferenceExpression:myField : java.lang.Class<java.lang.Integer>
+PsiReferenceExpression:myField : java.lang.Class<java.lang.Integer>
+PsiReferenceExpression:myField : java.lang.Class<java.lang.Integer>
+PsiReferenceExpression:myField : java.lang.Class<java.lang.Integer>
+PsiReferenceExpression:myField : java.lang.Class<java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+Fails:
+Set.class->java.lang.Class<java.lang.Integer>
+Set[].class->java.lang.Class<java.lang.Integer>
+int[].class->java.lang.Class<java.lang.Integer>
+void.class->java.lang.Class<java.lang.Integer>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.java
new file mode 100644
index 000000000000..44edef75bfe4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/after/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Class<Integer> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/before/Expr.java
new file mode 100644
index 000000000000..35a3d63f8dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitive/before/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.items
new file mode 100644
index 000000000000..cd609774cf24
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : java.lang.Class<int[]>
+PsiReferenceExpression:myField : java.lang.Class<int[]>
+PsiReferenceExpression:myField : java.lang.Class<int[]>
+PsiReferenceExpression:myField : java.lang.Class<int[]>
+PsiReferenceExpression:myField : java.lang.Class<int[]>
+PsiReferenceExpression:myField : java.lang.Class<int[]>
+
+Conversions:
+
+New expression type changes:
+Fails:
+Set.class->java.lang.Class<int[]>
+Set[].class->java.lang.Class<int[]>
+int.class->java.lang.Class<int[]>
+void.class->java.lang.Class<int[]>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.java
new file mode 100644
index 000000000000..9939d2f3d410
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/after/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Class<int[]> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/before/Expr.java
new file mode 100644
index 000000000000..35a3d63f8dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassPrimitiveArray/before/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.items
new file mode 100644
index 000000000000..0bda2fd18195
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myField : java.lang.Class
+PsiReferenceExpression:myField : java.lang.Class
+PsiReferenceExpression:myField : java.lang.Class
+PsiReferenceExpression:myField : java.lang.Class
+PsiReferenceExpression:myField : java.lang.Class
+PsiReferenceExpression:myField : java.lang.Class
+
+Conversions:
+Set.class -> $
+Set[].class -> $
+int.class -> $
+int[].class -> $
+void.class -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.java
new file mode 100644
index 000000000000..9edcf9d47a31
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/after/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Class myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/before/Expr.java
new file mode 100644
index 000000000000..35a3d63f8dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassRaw/before/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.items
new file mode 100644
index 000000000000..ee8fece53e89
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : java.lang.Class<java.util.Set>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set>
+
+Conversions:
+
+New expression type changes:
+Fails:
+Set[].class->java.lang.Class<java.util.Set>
+int.class->java.lang.Class<java.util.Set>
+int[].class->java.lang.Class<java.util.Set>
+void.class->java.lang.Class<java.util.Set>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.java
new file mode 100644
index 000000000000..45fd995735ae
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/after/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Class<Set> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/before/Expr.java
new file mode 100644
index 000000000000..35a3d63f8dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReference/before/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.items
new file mode 100644
index 000000000000..26be6c5d8e6f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : java.lang.Class<java.util.Set[]>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set[]>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set[]>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set[]>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set[]>
+PsiReferenceExpression:myField : java.lang.Class<java.util.Set[]>
+
+Conversions:
+
+New expression type changes:
+Fails:
+Set.class->java.lang.Class<java.util.Set[]>
+int.class->java.lang.Class<java.util.Set[]>
+int[].class->java.lang.Class<java.util.Set[]>
+void.class->java.lang.Class<java.util.Set[]>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.java
new file mode 100644
index 000000000000..46b110d7f75f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/after/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Class<Set[]> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/before/Expr.java
new file mode 100644
index 000000000000..35a3d63f8dea
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassReferenceArray/before/Expr.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.items
new file mode 100644
index 000000000000..61336d444497
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myField : java.lang.Class<? super java.util.AbstractSet[]>
+PsiReferenceExpression:myField : java.lang.Class<? super java.util.AbstractSet[]>
+PsiReferenceExpression:myField : java.lang.Class<? super java.util.AbstractSet[]>
+PsiReferenceExpression:myField : java.lang.Class<? super java.util.AbstractSet[]>
+PsiReferenceExpression:myField : java.lang.Class<? super java.util.AbstractSet[]>
+PsiReferenceExpression:myField : java.lang.Class<? super java.util.AbstractSet[]>
+
+Conversions:
+Set[].class -> $
+
+New expression type changes:
+Fails:
+Set.class->java.lang.Class<? super java.util.AbstractSet[]>
+int.class->java.lang.Class<? super java.util.AbstractSet[]>
+int[].class->java.lang.Class<? super java.util.AbstractSet[]>
+void.class->java.lang.Class<? super java.util.AbstractSet[]>
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.java
new file mode 100644
index 000000000000..3ae94c8c1228
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/after/Expr.java
@@ -0,0 +1,13 @@
+import java.util.AbstractSet;
+import java.util.Set;
+
+class Expr {
+ private Class<? super AbstractSet[]> myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/before/Expr.java
new file mode 100644
index 000000000000..1e5b26a44e4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralClassSuper/before/Expr.java
@@ -0,0 +1,13 @@
+import java.util.AbstractSet;
+import java.util.Set;
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = int.class;
+ myField = int[].class;
+ myField = Set.class;
+ myField = Set[].class;
+ myField = void.class;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.items
new file mode 100644
index 000000000000..eb7229ef905e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.items
@@ -0,0 +1,36 @@
+Types:
+PsiField:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+PsiReferenceExpression:myField : double
+
+Conversions:
+'#' -> $
+043 -> $
+043F -> $
+043L -> $
+0x23 -> $
+0x23F -> $
+0x23L -> $
+35 -> $
+35F -> $
+35L -> $
+
+New expression type changes:
+Fails:
+"#"->double
+false->double
+null->double
+true->double
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.java
new file mode 100644
index 000000000000..a1fafc25fe6e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private double myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralDouble/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.items
new file mode 100644
index 000000000000..dcf1562d69b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.items
@@ -0,0 +1,35 @@
+Types:
+PsiField:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+
+Conversions:
+'#' -> $
+043 -> $
+043L -> $
+0x23 -> $
+0x23F -> $
+0x23L -> $
+35 -> $
+35L -> $
+
+New expression type changes:
+Fails:
+"#"->float
+35.0->float
+false->float
+null->float
+true->float
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.java
new file mode 100644
index 000000000000..8210b283c426
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private float myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralFloat/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.items
new file mode 100644
index 000000000000..6969f1efd214
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.items
@@ -0,0 +1,33 @@
+Types:
+PsiField:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+
+Conversions:
+'#' -> $
+
+New expression type changes:
+Fails:
+"#"->int
+043F->int
+043L->int
+0x23L->int
+35.0->int
+35F->int
+35L->int
+false->int
+null->int
+true->int
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.java
new file mode 100644
index 000000000000..51bce6ac6430
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private int myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralInt/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.items
new file mode 100644
index 000000000000..71718fa25bb1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.items
@@ -0,0 +1,34 @@
+Types:
+PsiField:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+
+Conversions:
+'#' -> $
+043 -> $
+0x23 -> $
+0x23F -> $
+35 -> $
+
+New expression type changes:
+Fails:
+"#"->long
+043F->long
+35.0->long
+35F->long
+false->long
+null->long
+true->long
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.java
new file mode 100644
index 000000000000..1556e9f05ffb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private long myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralLong/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.items
new file mode 100644
index 000000000000..f282b956c933
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.items
@@ -0,0 +1,37 @@
+Types:
+PsiField:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+
+Conversions:
+
+New expression type changes:
+Fails:
+"#"->short
+'#'->short
+043->short
+043F->short
+043L->short
+0x23->short
+0x23F->short
+0x23L->short
+35->short
+35.0->short
+35F->short
+35L->short
+false->short
+null->short
+true->short
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.java
new file mode 100644
index 000000000000..39b549b335bb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private short myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralShort/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.items
new file mode 100644
index 000000000000..6bb1edafdfa8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.items
@@ -0,0 +1,35 @@
+Types:
+PsiField:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+PsiReferenceExpression:myField : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
+'#'->java.lang.String
+043->java.lang.String
+043F->java.lang.String
+043L->java.lang.String
+0x23->java.lang.String
+0x23F->java.lang.String
+0x23L->java.lang.String
+35->java.lang.String
+35.0->java.lang.String
+35F->java.lang.String
+35L->java.lang.String
+false->java.lang.String
+true->java.lang.String
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.java
new file mode 100644
index 000000000000..3adc44418ad4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/after/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private String myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/before/Expr.java
new file mode 100644
index 000000000000..05b89dc47d4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprLiteralString/before/Expr.java
@@ -0,0 +1,27 @@
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = null;
+
+ myField = false;
+ myField = true;
+
+ myField = 043;
+ myField = 35;
+ myField = 0x23;
+
+ myField = '#';
+
+ myField = 043L;
+ myField = 35L;
+ myField = 0x23L;
+
+ myField = 043F;
+ myField = 35F;
+ myField = 0x23F;
+
+ myField = 35.0;
+
+ myField = "#";
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.items
new file mode 100644
index 000000000000..444531918ce0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.items
@@ -0,0 +1,22 @@
+Types:
+PsiArrayInitializerExpression:{pfc} : FaceParent[][]
+PsiArrayInitializerExpression:{pfc} : FaceParent[][]
+PsiArrayInitializerExpression:{{pfc}} : FaceParent[][][]
+PsiField:myArrayOne : FaceParent[][]
+PsiField:myArrayTwo : FaceParent[][][]
+PsiNewExpression:new FaceChild[][][]{{pfc}} : FaceParent[][][]
+PsiNewExpression:new FaceChild[][]{pfc} : FaceParent[][]
+PsiParameter:pfc : FaceParent[]
+PsiReferenceExpression:myArrayOne : FaceParent[][]
+PsiReferenceExpression:myArrayTwo : FaceParent[][][]
+PsiReferenceExpression:pfc : FaceParent[]
+PsiReferenceExpression:pfc : FaceParent[]
+
+Conversions:
+pfc -> $
+pfc -> $
+
+New expression type changes:
+new FaceChild[][][]{{pfc}} -> FaceParent[][][]
+new FaceChild[][]{pfc} -> FaceParent[][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..570367998bd1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/after/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+
+class Expr {
+ private FaceParent[][] myArrayOne;
+ private FaceParent[][][] myArrayTwo;
+ public void meth(FaceParent[] pfc) {
+ myArrayOne = new FaceParent[][]{pfc};
+ myArrayTwo = new FaceParent[][][]{{pfc}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..d88808766d7d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Lvalue/before/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+
+class Expr {
+ private FaceChild[][] myArrayOne;
+ private FaceChild[][][] myArrayTwo;
+ public void meth(FaceChild[] pfc) {
+ myArrayOne = new FaceChild[][]{pfc};
+ myArrayTwo = new FaceChild[][][]{{pfc}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..4b4b9036abb0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.items
@@ -0,0 +1,14 @@
+Types:
+PsiArrayInitializerExpression:{null} : ClassParent[][]
+PsiArrayInitializerExpression:{pfc} : ClassParent[][]
+PsiField:myField : ClassParent[][][]
+PsiNewExpression:new FaceChild[][][]{{pfc}, {null}, null} : ClassParent[][][]
+PsiParameter:pfc : ClassParent[]
+PsiReferenceExpression:myField : ClassParent[][][]
+PsiReferenceExpression:pfc : ClassParent[]
+
+Conversions:
+
+New expression type changes:
+new FaceChild[][][]{{pfc}, {null}, null} -> ClassParent[][][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..fc54bb6ca9d6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/after/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private ClassParent[][][] myField;
+ public void meth(ClassParent[] pfc) {
+ myField = new ClassParent[][][]{{pfc}, {null}, null};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..8c4093e44d75
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayArray2Rvalue/before/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private FaceChild[][][] myField;
+ public void meth(FaceChild[] pfc) {
+ myField = new FaceChild[][][]{{pfc}, {null}, null};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..825ef4f10f19
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : java.util.Set<java.lang.Integer>[]
+PsiReferenceExpression:myField : java.util.Set<java.lang.Integer>[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+new Set[1]->java.util.Set<java.lang.Integer>[]
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..5083896eb293
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/after/Expr.java
@@ -0,0 +1,8 @@
+import java.util.Set;
+
+class Expr {
+ private Set<Integer>[] myField;
+ public void meth() {
+ myField = new Set[1];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..c2301a434ec9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayGen2Rvalue/before/Expr.java
@@ -0,0 +1,8 @@
+import java.util.Set;
+
+class Expr {
+ private Set[] myField;
+ public void meth() {
+ myField = new Set[1];
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.items
new file mode 100644
index 000000000000..d5976f11c486
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.items
@@ -0,0 +1,25 @@
+Types:
+PsiArrayInitializerExpression:{!p} : int[]
+PsiArrayInitializerExpression:{p} : int[]
+PsiArrayInitializerExpression:{p} : int[]
+PsiArrayInitializerExpression:{{p}, {!p}} : int[][]
+PsiField:myArrayOne : int[]
+PsiField:myArrayTwo : int[][]
+PsiNewExpression:new boolean[][]{{p}, {!p}} : int[][]
+PsiNewExpression:new boolean[]{p} : int[]
+PsiParameter:p : int
+PsiReferenceExpression:myArrayOne : int[]
+PsiReferenceExpression:myArrayTwo : int[][]
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+
+Conversions:
+p -> $
+p -> $
+
+New expression type changes:
+new boolean[][]{{p}, {!p}} -> int[][]
+new boolean[]{p} -> int[]
+Fails:
+!p->int
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..0c6c31bf4929
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/after/Expr.java
@@ -0,0 +1,8 @@
+class Expr {
+ private int[] myArrayOne;
+ private int[][] myArrayTwo;
+ public void meth(int p) {
+ myArrayOne = new int[]{p};
+ myArrayTwo = new int[][]{{p}, {!p}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..e7724ca422f4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Lvalue/before/Expr.java
@@ -0,0 +1,8 @@
+class Expr {
+ private boolean[] myArrayOne;
+ private boolean[][] myArrayTwo;
+ public void meth(boolean p) {
+ myArrayOne = new boolean[]{p};
+ myArrayTwo = new boolean[][]{{p}, {!p}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..5f371c0c6430
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.items
@@ -0,0 +1,21 @@
+Types:
+PsiArrayInitializerExpression:{!p} : int[]
+PsiArrayInitializerExpression:{0} : int[]
+PsiArrayInitializerExpression:{p} : int[]
+PsiArrayInitializerExpression:{true} : int[]
+PsiArrayInitializerExpression:{{p}, {!p}, {true}, {0}} : int[][]
+PsiField:myField : int[][]
+PsiNewExpression:new boolean[][]{{p}, {!p}, {true}, {0}} : int[][]
+PsiParameter:p : int
+PsiReferenceExpression:myField : int[][]
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+
+Conversions:
+p -> $
+
+New expression type changes:
+new boolean[][]{{p}, {!p}, {true}, {0}} -> int[][]
+Fails:
+!p->int
+true->int
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..58017644820c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/after/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ private int[][] myField;
+ public void meth(int p) {
+ myField = new int[][]{{p}, {!p}, {true}, {0}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..cb1e0d64aa4b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayPrimitive2Rvalue/before/Expr.java
@@ -0,0 +1,6 @@
+class Expr {
+ private boolean[][] myField;
+ public void meth(boolean p) {
+ myField = new boolean[][]{{p}, {!p}, {true}, {0}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.items
new file mode 100644
index 000000000000..a1472a46da67
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.items
@@ -0,0 +1,34 @@
+Types:
+PsiArrayInitializerExpression:{pcc} : FaceParent[]
+PsiArrayInitializerExpression:{pcp} : FaceParent[]
+PsiArrayInitializerExpression:{pfc, pcp, pcc} : FaceParent[]
+PsiArrayInitializerExpression:{pfc} : FaceParent[]
+PsiArrayInitializerExpression:{{pfc}, {pcp}, {pcc}} : FaceParent[][]
+PsiField:myArrayOne : FaceParent[]
+PsiField:myArrayTwo : FaceParent[][]
+PsiNewExpression:new FaceChild[][]{{pfc}, {pcp}, {pcc}} : FaceParent[][]
+PsiNewExpression:new FaceChild[]{pfc, pcp, pcc} : FaceParent[]
+PsiParameter:pcc : ClassChild
+PsiParameter:pcp : ClassParent
+PsiParameter:pfc : FaceParent
+PsiReferenceExpression:myArrayOne : FaceParent[]
+PsiReferenceExpression:myArrayTwo : FaceParent[][]
+PsiReferenceExpression:pcc : ClassChild
+PsiReferenceExpression:pcc : ClassChild
+PsiReferenceExpression:pcp : ClassParent
+PsiReferenceExpression:pcp : ClassParent
+PsiReferenceExpression:pfc : FaceParent
+PsiReferenceExpression:pfc : FaceParent
+
+Conversions:
+pcc -> $
+pcc -> $
+pcp -> $
+pcp -> $
+pfc -> $
+pfc -> $
+
+New expression type changes:
+new FaceChild[][]{{pfc}, {pcp}, {pcc}} -> FaceParent[][]
+new FaceChild[]{pfc, pcp, pcc} -> FaceParent[]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..bfae5390508e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/after/Expr.java
@@ -0,0 +1,13 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private FaceParent[] myArrayOne;
+ private FaceParent[][] myArrayTwo;
+ public void meth(FaceParent pfc, ClassParent pcp, ClassChild pcc) {
+ myArrayOne = new FaceParent[]{pfc, pcp, pcc};
+ myArrayTwo = new FaceParent[][]{{pfc}, {pcp}, {pcc}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..5cb70f7265f7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Lvalue/before/Expr.java
@@ -0,0 +1,13 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private FaceChild[] myArrayOne;
+ private FaceChild[][] myArrayTwo;
+ public void meth(FaceChild pfc, ClassParent pcp, ClassChild pcc) {
+ myArrayOne = new FaceChild[]{pfc, pcp, pcc};
+ myArrayTwo = new FaceChild[][]{{pfc}, {pcp}, {pcc}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..4dabd7d9161e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.items
@@ -0,0 +1,18 @@
+Types:
+PsiArrayInitializerExpression:{null} : ClassParent[]
+PsiArrayInitializerExpression:{pcc} : ClassParent[]
+PsiArrayInitializerExpression:{pcp} : ClassParent[]
+PsiArrayInitializerExpression:{pfc} : ClassParent[]
+PsiField:myField : ClassParent[][]
+PsiNewExpression:new FaceChild[][]{{pfc}, {pcp}, {pcc}, {null}} : ClassParent[][]
+PsiParameter:pcc : ClassChild
+PsiParameter:pfc : ClassParent
+PsiReferenceExpression:myField : ClassParent[][]
+PsiReferenceExpression:pcc : ClassChild
+PsiReferenceExpression:pfc : ClassParent
+
+Conversions:
+
+New expression type changes:
+new FaceChild[][]{{pfc}, {pcp}, {pcc}, {null}} -> ClassParent[][]
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..f2d53b50f272
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/after/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private ClassParent[][] myField;
+ public void meth(ClassParent pfc, ClassParent pcp, ClassChild pcc) {
+ myField = new ClassParent[][]{{pfc}, {pcp}, {pcc}, {null}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..9e973b7925a0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewArrayReftype2Rvalue/before/Expr.java
@@ -0,0 +1,11 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Expr {
+ private FaceChild[][] myField;
+ public void meth(FaceChild pfc, ClassParent pcp, ClassChild pcc) {
+ myField = new FaceChild[][]{{pfc}, {pcp}, {pcc}, {null}};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.items
new file mode 100644
index 000000000000..d19a8ab094b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myField : java.util.Set<Subject>
+PsiNewExpression:new Set() : java.util.Set
+PsiNewExpression:new Set<Ancestor>() : java.util.Set<Subject>
+PsiNewExpression:new Set<Descendant>() : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+
+Conversions:
+
+New expression type changes:
+new Set() -> java.util.Set
+new Set<Ancestor>() -> java.util.Set<Subject>
+new Set<Descendant>() -> java.util.Set<Subject>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.java
new file mode 100644
index 000000000000..aab73939b929
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/after/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Set<Subject> myField;
+ public void meth() {
+ myField = new Set();
+ myField = new Set<Subject>();
+ myField = new Set<Subject>();
+ myField = new Set<Subject>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/before/Expr.java
new file mode 100644
index 000000000000..e38d8aa7229f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGen/before/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = new Set();
+ myField = new Set<Ancestor>();
+ myField = new Set<Subject>();
+ myField = new Set<Descendant>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.items
new file mode 100644
index 000000000000..9003258e73a5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : java.util.Set<? extends Subject>
+PsiNewExpression:new Set() : java.util.Set
+PsiNewExpression:new Set<Ancestor>() : java.util.Set<Subject>
+PsiNewExpression:new Set<Subject>() : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<? extends Subject>
+PsiReferenceExpression:myField : java.util.Set<? extends Subject>
+PsiReferenceExpression:myField : java.util.Set<? extends Subject>
+
+Conversions:
+
+New expression type changes:
+new Set() -> java.util.Set
+new Set<Ancestor>() -> java.util.Set<Subject>
+new Set<Subject>() -> java.util.Set<Subject>
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.java
new file mode 100644
index 000000000000..f939534d6972
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/after/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Set<? extends Subject> myField;
+ public void meth() {
+ myField = new Set();
+ myField = new Set<Subject>();
+ myField = new Set<Subject>();
+ // myField = new Set<Descendant>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/before/Expr.java
new file mode 100644
index 000000000000..e65ce8b9a8fc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenExtends/before/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = new Set();
+ myField = new Set<Ancestor>();
+ myField = new Set<Subject>();
+ // myField = new Set<Descendant>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.items
new file mode 100644
index 000000000000..ca323d833a2c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:myField : java.util.Set<? super Subject>
+PsiNewExpression:new Set() : java.util.Set
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+
+Conversions:
+
+New expression type changes:
+new Set() -> java.util.Set
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.java
new file mode 100644
index 000000000000..4f5a29eecc6c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/after/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Set<? super Subject> myField;
+ public void meth() {
+ myField = new Set();
+ // myField = new Set<Ancestor>();
+ // myField = new Set<Subject>();
+ // myField = new Set<Descendant>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/before/Expr.java
new file mode 100644
index 000000000000..73a22ebeccde
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewGenSuper/before/Expr.java
@@ -0,0 +1,15 @@
+import java.util.Set;
+
+class Ancestor {}
+class Subject extends Ancestor {}
+class Descendant extends Subject {}
+
+class Expr {
+ private Object myField;
+ public void meth() {
+ myField = new Set();
+ // myField = new Set<Ancestor>();
+ // myField = new Set<Subject>();
+ // myField = new Set<Descendant>();
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.items
new file mode 100644
index 000000000000..cab7f8173076
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.items
@@ -0,0 +1,27 @@
+Types:
+PsiField:myField : Expr.Subject
+PsiNewExpression:new Descendant() : Expr.Descendant
+PsiNewExpression:new Descendant() {} : Expr.Descendant
+PsiNewExpression:new Subject() {} : Expr.Subject
+PsiNewExpression:this.new Descendant() : Expr.Descendant
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+PsiReferenceExpression:myField : Expr.Subject
+
+Conversions:
+
+New expression type changes:
+new Descendant() -> Expr.Descendant
+new Descendant() {} -> Expr.Descendant
+new Subject() {} -> Expr.Subject
+this.new Descendant() -> Expr.Descendant
+Fails:
+new Ancestor()->Expr.Subject
+new Ancestor() {}->Expr.Subject
+this.new Ancestor()->Expr.Subject
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.java
new file mode 100644
index 000000000000..5cc9c87ec7e4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/after/Expr.java
@@ -0,0 +1,21 @@
+class Expr {
+ private class Ancestor {}
+ private class Subject extends Ancestor {}
+ private class Descendant extends Subject {}
+
+ private Subject myField;
+
+ public void meth() {
+ myField = new Ancestor();
+ myField = this.new Ancestor();
+ myField = new Ancestor() {};
+
+ myField = new Subject();
+ myField = this.new Subject();
+ myField = new Subject() {};
+
+ myField = new Descendant();
+ myField = this.new Descendant();
+ myField = new Descendant() {};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/before/Expr.java
new file mode 100644
index 000000000000..ed03e4ddc1d3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprNewReference/before/Expr.java
@@ -0,0 +1,21 @@
+class Expr {
+ private class Ancestor {}
+ private class Subject extends Ancestor {}
+ private class Descendant extends Subject {}
+
+ private Ancestor myField;
+
+ public void meth() {
+ myField = new Ancestor();
+ myField = this.new Ancestor();
+ myField = new Ancestor() {};
+
+ myField = new Subject();
+ myField = this.new Subject();
+ myField = new Subject() {};
+
+ myField = new Descendant();
+ myField = this.new Descendant();
+ myField = new Descendant() {};
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.items
new file mode 100644
index 000000000000..e91631f5c332
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiMethod:meth : java.lang.String
+PsiParameter:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.java
new file mode 100644
index 000000000000..37c310d405e3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/after/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public String meth(String p) {
+ return p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/before/Expr.java
new file mode 100644
index 000000000000..76e26b5c15bb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Lvalue/before/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public int meth(int p) {
+ return p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.items
new file mode 100644
index 000000000000..e91631f5c332
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.items
@@ -0,0 +1,9 @@
+Types:
+PsiMethod:meth : java.lang.String
+PsiParameter:p : java.lang.String
+PsiReferenceExpression:p : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.java
new file mode 100644
index 000000000000..37c310d405e3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/after/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public String meth(String p) {
+ return p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/before/Expr.java
new file mode 100644
index 000000000000..76e26b5c15bb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprReturn2Rvalue/before/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public int meth(int p) {
+ return p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.items
new file mode 100644
index 000000000000..6e445ca2c431
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.items
@@ -0,0 +1,10 @@
+Types:
+PsiLocalVariable:v : java.lang.String
+PsiParameter:pd : java.lang.String
+PsiReferenceExpression:pd : java.lang.String
+PsiReferenceExpression:pd : java.lang.String
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.java
new file mode 100644
index 000000000000..1e75f910f300
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/after/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(String pd, int pp) {
+ String v = pp > 0 ? pd : pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/before/Expr.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/before/Expr.java
new file mode 100644
index 000000000000..3a714e5334a4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/exprTernary/before/Expr.java
@@ -0,0 +1,5 @@
+class Expr {
+ public void meth(double pd, int pp) {
+ double v = pp > 0 ? pd : pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Overriding.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Overriding.java
new file mode 100644
index 000000000000..9fb5b2161ba1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Overriding.java
@@ -0,0 +1,13 @@
+class Parent {
+ private byte myInt;
+ public byte getInt() {
+ return myInt;
+ }
+}
+
+class Child extends Parent {
+ private byte myInt;
+ public byte getInt() {
+ return myInt;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Parent.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Parent.items
new file mode 100644
index 000000000000..0857363a2808
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/after/Parent.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:myInt : byte
+PsiField:myInt : byte
+PsiMethod:getInt : byte
+PsiMethod:getInt : byte
+PsiReferenceExpression:myInt : byte
+PsiReferenceExpression:myInt : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/before/Overriding.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/before/Overriding.java
new file mode 100644
index 000000000000..212ce8080636
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingDown/before/Overriding.java
@@ -0,0 +1,13 @@
+class Parent {
+ private int myInt;
+ public int getInt() {
+ return myInt;
+ }
+}
+
+class Child extends Parent {
+ private int myInt;
+ public int getInt() {
+ return myInt;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Child.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Child.items
new file mode 100644
index 000000000000..0857363a2808
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Child.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:myInt : byte
+PsiField:myInt : byte
+PsiMethod:getInt : byte
+PsiMethod:getInt : byte
+PsiReferenceExpression:myInt : byte
+PsiReferenceExpression:myInt : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Overriding.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Overriding.java
new file mode 100644
index 000000000000..9fb5b2161ba1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/after/Overriding.java
@@ -0,0 +1,13 @@
+class Parent {
+ private byte myInt;
+ public byte getInt() {
+ return myInt;
+ }
+}
+
+class Child extends Parent {
+ private byte myInt;
+ public byte getInt() {
+ return myInt;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/before/Overriding.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/before/Overriding.java
new file mode 100644
index 000000000000..212ce8080636
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/overridingUp/before/Overriding.java
@@ -0,0 +1,13 @@
+class Parent {
+ private int myInt;
+ public int getInt() {
+ return myInt;
+ }
+}
+
+class Child extends Parent {
+ private int myInt;
+ public int getInt() {
+ return myInt;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.items
new file mode 100644
index 000000000000..4428712f4683
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.items
@@ -0,0 +1,8 @@
+Types:
+PsiParameter:p : java.util.Set
+
+Conversions:
+#meth(double) -> PsiMethod:meth
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.java
new file mode 100644
index 000000000000..b6c748c1e749
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/after/Spec.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Spec {
+ /**
+ * @see #meth(java.util.Set)
+ */
+ public void methRef() {
+ }
+
+ public void meth(Set p) {
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/before/Spec.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/before/Spec.java
new file mode 100644
index 000000000000..45080dc2dec1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specJavadoc/before/Spec.java
@@ -0,0 +1,12 @@
+import java.util.Set;
+
+class Spec {
+ /**
+ * @see #meth(double)
+ */
+ public void methRef() {
+ }
+
+ public void meth(double p) {
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.items
new file mode 100644
index 000000000000..8ffc5c9a6744
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.items
@@ -0,0 +1,7 @@
+Types:
+PsiField:myField : boolean
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.java
new file mode 100644
index 000000000000..03d0dc267246
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/after/Spec.java
@@ -0,0 +1,3 @@
+class Spec {
+ private boolean myField;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/before/Spec.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/before/Spec.java
new file mode 100644
index 000000000000..36a606c54faa
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/specNotUsed/before/Spec.java
@@ -0,0 +1,3 @@
+class Spec {
+ private int myField;
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.items
new file mode 100644
index 000000000000..e56da57e1062
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.items
@@ -0,0 +1,13 @@
+Types:
+PsiField:myDescendants : Subject[]
+PsiParameter:p : Subject[]
+PsiReferenceExpression:myDescendants : Subject[]
+PsiReferenceExpression:p : Subject[]
+PsiReferenceExpression:p : Subject[]
+PsiReferenceExpression:p : Subject[]
+
+Conversions:
+myAncestors -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.java
new file mode 100644
index 000000000000..5b667afd7284
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/after/Type.java
@@ -0,0 +1,15 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myAncestors;
+ private Subject[] mySubjects;
+ private Subject[] myDescendants;
+
+ public void meth(Subject[] p) {
+ myAncestors = p;
+ mySubjects = p;
+ myDescendants = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/before/Type.java
new file mode 100644
index 000000000000..6c0ad8e907ae
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Lvalue/before/Type.java
@@ -0,0 +1,15 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myAncestors;
+ private Subject[] mySubjects;
+ private Descendant[] myDescendants;
+
+ public void meth(Descendant[] p) {
+ myAncestors = p;
+ mySubjects = p;
+ myDescendants = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.items
new file mode 100644
index 000000000000..aa0545cd97f1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.items
@@ -0,0 +1,13 @@
+Types:
+PsiField:myField : Subject[][]
+PsiParameter:pa : Subject[][]
+PsiReferenceExpression:myField : Subject[][]
+PsiReferenceExpression:myField : Subject[][]
+PsiReferenceExpression:myField : Subject[][]
+PsiReferenceExpression:pa : Subject[][]
+
+Conversions:
+pd -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.java
new file mode 100644
index 000000000000..1dc9d19b69d7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Subject[][] myField;
+ public void meth(Subject[][] pa, Subject[][] ps, Descendant[][] pd) {
+ myField = pa;
+ myField = ps;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/before/Type.java
new file mode 100644
index 000000000000..b84f5fada9b6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayReftype2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[][] myField;
+ public void meth(Ancestor[][] pa, Subject[][] ps, Descendant[][] pd) {
+ myField = pa;
+ myField = ps;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.items
new file mode 100644
index 000000000000..bfcf79449245
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myHolder : Holder[]
+PsiParameter:p : Holder[]
+PsiReferenceExpression:myHolder : Holder[]
+PsiReferenceExpression:p : Holder[]
+PsiReferenceExpression:p : Holder[]
+PsiReferenceExpression:p : Holder[]
+PsiReferenceExpression:p : Holder[]
+
+Conversions:
+myCloneable -> $
+myObject -> $
+mySerializable -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.java
new file mode 100644
index 000000000000..ea67626d3e12
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/after/Type.java
@@ -0,0 +1,15 @@
+class Holder implements Cloneable, java.io.Serializable {}
+
+class Type {
+ private Object myObject;
+ private Cloneable myCloneable;
+ private java.io.Serializable mySerializable;
+ private Holder[] myHolder;
+
+ public void meth(Holder[] p) {
+ myObject = p;
+ myCloneable = p;
+ mySerializable = p;
+ myHolder = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/before/Type.java
new file mode 100644
index 000000000000..41bb17f7fec2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayRoots2Lvalue/before/Type.java
@@ -0,0 +1,15 @@
+class Holder implements Cloneable, java.io.Serializable {}
+
+class Type {
+ private Object myObject;
+ private Cloneable myCloneable;
+ private java.io.Serializable mySerializable;
+ private Holder myHolder;
+
+ public void meth(Holder p) {
+ myObject = p;
+ myCloneable = p;
+ mySerializable = p;
+ myHolder = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.items
new file mode 100644
index 000000000000..9bcbf6e3ccf2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.items
@@ -0,0 +1,13 @@
+Types:
+PsiField:myDescendants : Subject[]
+PsiParameter:p : Subject...
+PsiReferenceExpression:myDescendants : Subject[]
+PsiReferenceExpression:p : Subject[]
+PsiReferenceExpression:p : Subject[]
+PsiReferenceExpression:p : Subject[]
+
+Conversions:
+myAncestors -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.java
new file mode 100644
index 000000000000..82714edc14eb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/after/Type.java
@@ -0,0 +1,15 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myAncestors;
+ private Subject[] mySubjects;
+ private Subject[] myDescendants;
+
+ public void meth(Subject... p) {
+ myAncestors = p;
+ mySubjects = p;
+ myDescendants = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/before/Type.java
new file mode 100644
index 000000000000..6c0ad8e907ae
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2Lvalue/before/Type.java
@@ -0,0 +1,15 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myAncestors;
+ private Subject[] mySubjects;
+ private Descendant[] myDescendants;
+
+ public void meth(Descendant[] p) {
+ myAncestors = p;
+ mySubjects = p;
+ myDescendants = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.items
new file mode 100644
index 000000000000..8e16567f6b52
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:myField : Descendant[]
+PsiParameter:p : Descendant[]
+PsiReferenceExpression:myField : Descendant[]
+PsiReferenceExpression:p : Descendant[]
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.java
new file mode 100644
index 000000000000..b14ffa0b66b9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/after/Type.java
@@ -0,0 +1,10 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Descendant[] myField;
+ public void meth(Descendant[] p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/before/Type.java
new file mode 100644
index 000000000000..299d07095294
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvalueNeg/before/Type.java
@@ -0,0 +1,10 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myField;
+ public void meth(Subject... p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.items
new file mode 100644
index 000000000000..fa58313766a2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.items
@@ -0,0 +1,8 @@
+Types:
+PsiField:myField : Subject[]
+PsiReferenceExpression:myField : Subject[]
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.java
new file mode 100644
index 000000000000..b17f19ce9366
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/after/Type.java
@@ -0,0 +1,10 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Subject[] myField;
+ public void meth(Subject... p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/before/Type.java
new file mode 100644
index 000000000000..299d07095294
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeArrayVararg2RvaluePos/before/Type.java
@@ -0,0 +1,10 @@
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Ancestor[] myField;
+ public void meth(Subject... p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.items
new file mode 100644
index 000000000000..d2a5bdf18da5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.items
@@ -0,0 +1,11 @@
+Types:
+PsiParameter:p : java.lang.Boolean
+PsiReferenceExpression:p : java.lang.Boolean
+PsiReferenceExpression:p : java.lang.Boolean
+
+Conversions:
+myField -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.java
new file mode 100644
index 000000000000..256ad8ae87ba
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/after/Type.java
@@ -0,0 +1,8 @@
+class Type {
+ private boolean myField;
+ private Object myFieldSuper3;
+ public void meth(Boolean p) {
+ myField = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/before/Type.java
new file mode 100644
index 000000000000..e27196d88750
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Lvalue/before/Type.java
@@ -0,0 +1,8 @@
+class Type {
+ private boolean myField;
+ private Object myFieldSuper3;
+ public void meth(boolean p) {
+ myField = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.items
new file mode 100644
index 000000000000..ddbe17fb4ffc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : boolean
+PsiReferenceExpression:myField : boolean
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.java
new file mode 100644
index 000000000000..d58f3df69336
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private boolean myField;
+ public void meth(Boolean p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/before/Type.java
new file mode 100644
index 000000000000..fcfe89fe9eca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxBoolean2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Boolean myField;
+ public void meth(Boolean p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.items
new file mode 100644
index 000000000000..1c80a5546782
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:p : java.lang.Byte
+PsiReferenceExpression:p : java.lang.Byte
+PsiReferenceExpression:p : java.lang.Byte
+PsiReferenceExpression:p : java.lang.Byte
+PsiReferenceExpression:p : java.lang.Byte
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.java
new file mode 100644
index 000000000000..40e19f5b4a68
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private byte myField;
+ private short myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Byte p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/before/Type.java
new file mode 100644
index 000000000000..c525d82e6f19
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Lvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private byte myField;
+ private short myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(byte p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.items
new file mode 100644
index 000000000000..192b82591e68
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : byte
+PsiReferenceExpression:myField : byte
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.java
new file mode 100644
index 000000000000..435b929c8591
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private byte myField;
+ public void meth(Byte p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/before/Type.java
new file mode 100644
index 000000000000..c0c7993580df
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxByte2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Byte myField;
+ public void meth(Byte p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.items
new file mode 100644
index 000000000000..3499c81915b3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.items
@@ -0,0 +1,13 @@
+Types:
+PsiParameter:p : java.lang.Character
+PsiReferenceExpression:p : java.lang.Character
+PsiReferenceExpression:p : java.lang.Character
+PsiReferenceExpression:p : java.lang.Character
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.java
new file mode 100644
index 000000000000..c075b5ea1ae1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/after/Type.java
@@ -0,0 +1,10 @@
+class Type {
+ private char myField;
+ private int myFieldSuper1;
+ private Object myFieldSuper3;
+ public void meth(Character p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/before/Type.java
new file mode 100644
index 000000000000..c821e8a38b8e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Lvalue/before/Type.java
@@ -0,0 +1,10 @@
+class Type {
+ private char myField;
+ private int myFieldSuper1;
+ private Object myFieldSuper3;
+ public void meth(char p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.items
new file mode 100644
index 000000000000..8f1b31f74f05
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : char
+PsiReferenceExpression:myField : char
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.java
new file mode 100644
index 000000000000..bec7b611e95a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private char myField;
+ public void meth(Character p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/before/Type.java
new file mode 100644
index 000000000000..a98d2a5fa05a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxChar2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Character myField;
+ public void meth(Character p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.items
new file mode 100644
index 000000000000..c961b407f293
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.items
@@ -0,0 +1,13 @@
+Types:
+PsiParameter:p : java.lang.Double
+PsiReferenceExpression:p : java.lang.Double
+PsiReferenceExpression:p : java.lang.Double
+PsiReferenceExpression:p : java.lang.Double
+
+Conversions:
+myField -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.java
new file mode 100644
index 000000000000..c2cc8485f4f5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/after/Type.java
@@ -0,0 +1,10 @@
+class Type {
+ private double myField;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Double p) {
+ myField = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/before/Type.java
new file mode 100644
index 000000000000..56ec2d53eb99
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Lvalue/before/Type.java
@@ -0,0 +1,10 @@
+class Type {
+ private double myField;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(double p) {
+ myField = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.items
new file mode 100644
index 000000000000..2c80921ecfcb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : double
+PsiReferenceExpression:myField : double
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.java
new file mode 100644
index 000000000000..ac0e3c68ebdb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private double myField;
+ public void meth(Double p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/before/Type.java
new file mode 100644
index 000000000000..4950dcb0d5bd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxDouble2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Double myField;
+ public void meth(Double p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.items
new file mode 100644
index 000000000000..d51dd6bd244e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:p : java.lang.Float
+PsiReferenceExpression:p : java.lang.Float
+PsiReferenceExpression:p : java.lang.Float
+PsiReferenceExpression:p : java.lang.Float
+PsiReferenceExpression:p : java.lang.Float
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.java
new file mode 100644
index 000000000000..4e06d3369857
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private float myField;
+ private double myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Float p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/before/Type.java
new file mode 100644
index 000000000000..24ec9a945603
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Lvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private float myField;
+ private double myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(float p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.items
new file mode 100644
index 000000000000..1b905928d822
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : float
+PsiReferenceExpression:myField : float
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.java
new file mode 100644
index 000000000000..1db8edb10bed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private float myField;
+ public void meth(Float p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/before/Type.java
new file mode 100644
index 000000000000..078b103e8df1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxFloat2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Float myField;
+ public void meth(Float p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.items
new file mode 100644
index 000000000000..24c52d5796ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+PsiReferenceExpression:p : java.lang.Integer
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.java
new file mode 100644
index 000000000000..e0075f597b24
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private int myField;
+ private long myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Integer p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/before/Type.java
new file mode 100644
index 000000000000..9c2f74c3f26f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Lvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private int myField;
+ private long myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(int p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.items
new file mode 100644
index 000000000000..d95e0af0768c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : int
+PsiReferenceExpression:myField : int
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.java
new file mode 100644
index 000000000000..4bf28b31788c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private int myField;
+ public void meth(Integer p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/before/Type.java
new file mode 100644
index 000000000000..87273262b496
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxInt2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Integer myField;
+ public void meth(Integer p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.items
new file mode 100644
index 000000000000..29939f335f62
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:p : java.lang.Long
+PsiReferenceExpression:p : java.lang.Long
+PsiReferenceExpression:p : java.lang.Long
+PsiReferenceExpression:p : java.lang.Long
+PsiReferenceExpression:p : java.lang.Long
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.java
new file mode 100644
index 000000000000..695801b1bc4f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private long myField;
+ private float myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Long p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/before/Type.java
new file mode 100644
index 000000000000..c6a909f7c46a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Lvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private long myField;
+ private float myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(long p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.items
new file mode 100644
index 000000000000..0fa3e3feb520
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : long
+PsiReferenceExpression:myField : long
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.java
new file mode 100644
index 000000000000..6f407a2591a1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private long myField;
+ public void meth(Long p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/before/Type.java
new file mode 100644
index 000000000000..ceceb07caa8e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxLong2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Long myField;
+ public void meth(Long p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.items
new file mode 100644
index 000000000000..c6a4cc9b70c8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiParameter:p : java.lang.Short
+PsiReferenceExpression:p : java.lang.Short
+PsiReferenceExpression:p : java.lang.Short
+PsiReferenceExpression:p : java.lang.Short
+PsiReferenceExpression:p : java.lang.Short
+
+Conversions:
+myField -> $
+myFieldSuper1 -> $
+myFieldSuper2 -> $
+myFieldSuper3 -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.java
new file mode 100644
index 000000000000..50d61183a785
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private short myField;
+ private int myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(Short p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/before/Type.java
new file mode 100644
index 000000000000..52eb7aa5b30c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Lvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private short myField;
+ private int myFieldSuper1;
+ private Number myFieldSuper2;
+ private Object myFieldSuper3;
+ public void meth(short p) {
+ myField = p;
+ myFieldSuper1 = p;
+ myFieldSuper2 = p;
+ myFieldSuper3 = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.items
new file mode 100644
index 000000000000..28ba15701be6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : short
+PsiReferenceExpression:myField : short
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.java
new file mode 100644
index 000000000000..ba146982c723
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private short myField;
+ public void meth(Short p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/before/Type.java
new file mode 100644
index 000000000000..9ca0f4947260
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeAutoboxShort2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private Short myField;
+ public void meth(Short p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.items
new file mode 100644
index 000000000000..6106a705cdd8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.items
@@ -0,0 +1,33 @@
+Types:
+PsiField:myAncestorSupers : java.util.Set<Subject>
+PsiField:myAncestors : java.util.Set<Subject>
+PsiField:myCollection : java.util.Collection<Subject>
+PsiField:myDescendantExtends : java.util.Set<Subject>
+PsiField:myDescendants : java.util.Set<Subject>
+PsiParameter:p : java.util.Set<Subject>
+PsiReferenceExpression:myAncestorSupers : java.util.Set<Subject>
+PsiReferenceExpression:myAncestors : java.util.Set<Subject>
+PsiReferenceExpression:myCollection : java.util.Collection<Subject>
+PsiReferenceExpression:myDescendantExtends : java.util.Set<Subject>
+PsiReferenceExpression:myDescendants : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+PsiReferenceExpression:p : java.util.Set<Subject>
+
+Conversions:
+myAncestorExtends -> $
+myDescendantSupers -> $
+mySet -> $
+mySubjectExtends -> $
+mySubjectSupers -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.java
new file mode 100644
index 000000000000..7e3eeb9770ca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/after/Type.java
@@ -0,0 +1,40 @@
+import java.util.Collection;
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<Subject> myAncestors;
+ private Set<? extends Ancestor> myAncestorExtends;
+ private Set<Subject> myAncestorSupers;
+
+ private Set<Subject> mySubjects;
+ private Set<? extends Subject> mySubjectExtends;
+ private Set<? super Subject> mySubjectSupers;
+
+ private Set<Subject> myDescendants;
+ private Set<Subject> myDescendantExtends;
+ private Set<? super Descendant> myDescendantSupers;
+
+ private Set mySet;
+ private Collection<Subject> myCollection;
+
+ public void meth(Set<Subject> p) {
+ myAncestors = p;
+ myAncestorExtends = p;
+ myAncestorSupers = p;
+
+ mySubjects = p;
+ mySubjectExtends = p;
+ mySubjectSupers = p;
+
+ myDescendants = p;
+ myDescendantExtends = p;
+ myDescendantSupers = p;
+
+ mySet = p;
+ myCollection = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2e63240580ca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestor2Lvalue/before/Type.java
@@ -0,0 +1,40 @@
+import java.util.Collection;
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<Ancestor> myAncestors;
+ private Set<? extends Ancestor> myAncestorExtends;
+ private Set<? super Ancestor> myAncestorSupers;
+
+ private Set<Subject> mySubjects;
+ private Set<? extends Subject> mySubjectExtends;
+ private Set<? super Subject> mySubjectSupers;
+
+ private Set<Descendant> myDescendants;
+ private Set<? extends Descendant> myDescendantExtends;
+ private Set<? super Descendant> myDescendantSupers;
+
+ private Set mySet;
+ private Collection<Ancestor> myCollection;
+
+ public void meth(Set p) {
+ myAncestors = p;
+ myAncestorExtends = p;
+ myAncestorSupers = p;
+
+ mySubjects = p;
+ mySubjectExtends = p;
+ mySubjectSupers = p;
+
+ myDescendants = p;
+ myDescendantExtends = p;
+ myDescendantSupers = p;
+
+ mySet = p;
+ myCollection = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.items
new file mode 100644
index 000000000000..6cb2f2be0d34
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.items
@@ -0,0 +1,33 @@
+Types:
+PsiField:myAncestorSupers : java.util.Set<? extends Subject>
+PsiField:myAncestors : java.util.Set<? extends Subject>
+PsiField:myDescendantExtends : java.util.Set<? extends Subject>
+PsiField:myDescendantSupers : java.util.Set<? extends Subject>
+PsiField:myDescendants : java.util.Set<? extends Subject>
+PsiField:mySubjectSupers : java.util.Set<? extends Subject>
+PsiField:mySubjects : java.util.Set<? extends Subject>
+PsiParameter:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:myAncestorSupers : java.util.Set<? extends Subject>
+PsiReferenceExpression:myAncestors : java.util.Set<? extends Subject>
+PsiReferenceExpression:myDescendantExtends : java.util.Set<? extends Subject>
+PsiReferenceExpression:myDescendantSupers : java.util.Set<? extends Subject>
+PsiReferenceExpression:myDescendants : java.util.Set<? extends Subject>
+PsiReferenceExpression:mySubjectSupers : java.util.Set<? extends Subject>
+PsiReferenceExpression:mySubjects : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+PsiReferenceExpression:p : java.util.Set<? extends Subject>
+
+Conversions:
+myAncestorExtends -> $
+mySet -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.java
new file mode 100644
index 000000000000..2ffef9b4e9ad
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/after/Type.java
@@ -0,0 +1,37 @@
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<? extends Subject> myAncestors;
+ private Set<? extends Ancestor> myAncestorExtends;
+ private Set<? extends Subject> myAncestorSupers;
+
+ private Set<? extends Subject> mySubjects;
+ private Set<? extends Subject> mySubjectExtends;
+ private Set<? extends Subject> mySubjectSupers;
+
+ private Set<? extends Subject> myDescendants;
+ private Set<? extends Subject> myDescendantExtends;
+ private Set<? extends Subject> myDescendantSupers;
+
+ private Set mySet;
+
+ public void meth(Set<? extends Subject> p) {
+ myAncestors = p;
+ myAncestorExtends = p;
+ myAncestorSupers = p;
+
+ mySubjects = p;
+ mySubjectExtends = p;
+ mySubjectSupers = p;
+
+ myDescendants = p;
+ myDescendantExtends = p;
+ myDescendantSupers = p;
+
+ mySet = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/before/Type.java
new file mode 100644
index 000000000000..4fc8d5baf167
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenAncestorWildcard2Lvalue/before/Type.java
@@ -0,0 +1,37 @@
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<Ancestor> myAncestors;
+ private Set<? extends Ancestor> myAncestorExtends;
+ private Set<? super Ancestor> myAncestorSupers;
+
+ private Set<Subject> mySubjects;
+ private Set<? extends Subject> mySubjectExtends;
+ private Set<? super Subject> mySubjectSupers;
+
+ private Set<Descendant> myDescendants;
+ private Set<? extends Descendant> myDescendantExtends;
+ private Set<? super Descendant> myDescendantSupers;
+
+ private Set mySet;
+
+ public void meth(Set p) {
+ myAncestors = p;
+ myAncestorExtends = p;
+ myAncestorSupers = p;
+
+ mySubjects = p;
+ mySubjectExtends = p;
+ mySubjectSupers = p;
+
+ myDescendants = p;
+ myDescendantExtends = p;
+ myDescendantSupers = p;
+
+ mySet = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.items
new file mode 100644
index 000000000000..ab6a62095446
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.items
@@ -0,0 +1,37 @@
+Types:
+PsiField:myField : java.util.Set<Subject>
+PsiLocalVariable:ancestorExtends : java.util.Set<Subject>
+PsiLocalVariable:ancestorSupers : java.util.Set<Subject>
+PsiLocalVariable:ancestors : java.util.Set<Subject>
+PsiLocalVariable:descendantExtends : java.util.Set<Subject>
+PsiLocalVariable:descendantSupers : java.util.Set<Subject>
+PsiLocalVariable:descendants : java.util.Set<Subject>
+PsiLocalVariable:myCollection : java.util.AbstractSet<Subject>
+PsiLocalVariable:subjectExtends : java.util.Set<Subject>
+PsiLocalVariable:subjectSupers : java.util.Set<Subject>
+PsiReferenceExpression:ancestorExtends : java.util.Set<Subject>
+PsiReferenceExpression:ancestorSupers : java.util.Set<Subject>
+PsiReferenceExpression:ancestors : java.util.Set<Subject>
+PsiReferenceExpression:descendantExtends : java.util.Set<Subject>
+PsiReferenceExpression:descendantSupers : java.util.Set<Subject>
+PsiReferenceExpression:descendants : java.util.Set<Subject>
+PsiReferenceExpression:myCollection : java.util.AbstractSet<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:myField : java.util.Set<Subject>
+PsiReferenceExpression:subjectExtends : java.util.Set<Subject>
+PsiReferenceExpression:subjectSupers : java.util.Set<Subject>
+
+Conversions:
+set -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.java
new file mode 100644
index 000000000000..119e65ca61b5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/after/Type.java
@@ -0,0 +1,39 @@
+import java.util.AbstractSet;
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<Subject> myField;
+
+ public void meth() {
+ Set<Subject> ancestors = null;
+ myField = ancestors;
+ Set<Subject> ancestorExtends = null;
+ myField = ancestorExtends;
+ Set<Subject> ancestorSupers = null;
+ myField = ancestorSupers;
+
+ // turning everything into Set<Subject> is actually too strict, but correct
+ Set<Subject> subjects = null;
+ myField = subjects;
+ Set<Subject> subjectExtends = null;
+ myField = subjectExtends;
+ Set<Subject> subjectSupers = null;
+ myField = subjectSupers;
+
+ Set<Subject> descendants = null;
+ myField = descendants;
+ Set<Subject> descendantExtends = null;
+ myField = descendantExtends;
+ Set<Subject> descendantSupers = null;
+ myField = descendantSupers;
+
+ Set set = null;
+ myField = set;
+ AbstractSet<Subject> myCollection = null;
+ myField = myCollection;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/before/Type.java
new file mode 100644
index 000000000000..e53aa1d3cd1b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendant2Rvalue/before/Type.java
@@ -0,0 +1,39 @@
+import java.util.AbstractSet;
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set myField;
+
+ public void meth() {
+ Set<Ancestor> ancestors = null;
+ myField = ancestors;
+ Set<? extends Ancestor> ancestorExtends = null;
+ myField = ancestorExtends;
+ Set<? super Ancestor> ancestorSupers = null;
+ myField = ancestorSupers;
+
+ // turning everything into Set<Subject> is actually too strict, but correct
+ Set<Subject> subjects = null;
+ myField = subjects;
+ Set<? extends Subject> subjectExtends = null;
+ myField = subjectExtends;
+ Set<? super Subject> subjectSupers = null;
+ myField = subjectSupers;
+
+ Set<Descendant> descendants = null;
+ myField = descendants;
+ Set<? extends Descendant> descendantExtends = null;
+ myField = descendantExtends;
+ Set<? super Descendant> descendantSupers = null;
+ myField = descendantSupers;
+
+ Set set = null;
+ myField = set;
+ AbstractSet<Descendant> myCollection = null;
+ myField = myCollection;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.items
new file mode 100644
index 000000000000..e34aedf887d3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.items
@@ -0,0 +1,32 @@
+Types:
+PsiField:myField : java.util.Set<? super Subject>
+PsiLocalVariable:ancestorExtends : java.util.Set<? super Subject>
+PsiLocalVariable:descendantExtends : java.util.Set<? super Subject>
+PsiLocalVariable:descendantSupers : java.util.Set<? super Subject>
+PsiLocalVariable:descendants : java.util.Set<? super Subject>
+PsiLocalVariable:subjectExtends : java.util.Set<? super Subject>
+PsiReferenceExpression:ancestorExtends : java.util.Set<? super Subject>
+PsiReferenceExpression:descendantExtends : java.util.Set<? super Subject>
+PsiReferenceExpression:descendantSupers : java.util.Set<? super Subject>
+PsiReferenceExpression:descendants : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:myField : java.util.Set<? super Subject>
+PsiReferenceExpression:subjectExtends : java.util.Set<? super Subject>
+
+Conversions:
+ancestorSupers -> $
+ancestors -> $
+set -> $
+subjectSupers -> $
+subjects -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.java
new file mode 100644
index 000000000000..a0982c89aa5c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/after/Type.java
@@ -0,0 +1,35 @@
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set<? super Subject> myField;
+
+ public void meth() {
+ Set<Ancestor> ancestors = null;
+ myField = ancestors;
+ Set<? super Subject> ancestorExtends = null;
+ myField = ancestorExtends;
+ Set<? super Ancestor> ancestorSupers = null;
+ myField = ancestorSupers;
+
+ Set<Subject> subjects = null;
+ myField = subjects;
+ Set<? super Subject> subjectExtends = null;
+ myField = subjectExtends;
+ Set<? super Subject> subjectSupers = null;
+ myField = subjectSupers;
+
+ Set<? super Subject> descendants = null;
+ myField = descendants;
+ Set<? super Subject> descendantExtends = null;
+ myField = descendantExtends;
+ Set<? super Subject> descendantSupers = null;
+ myField = descendantSupers;
+
+ Set set = null;
+ myField = set;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/before/Type.java
new file mode 100644
index 000000000000..79f4d219b47c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenDescendantWildcard2Rvalue/before/Type.java
@@ -0,0 +1,35 @@
+import java.util.Set;
+
+interface Ancestor {}
+interface Subject extends Ancestor {}
+class Descendant implements Subject {}
+
+class Type {
+ private Set myField;
+
+ public void meth() {
+ Set<Ancestor> ancestors = null;
+ myField = ancestors;
+ Set<? extends Ancestor> ancestorExtends = null;
+ myField = ancestorExtends;
+ Set<? super Ancestor> ancestorSupers = null;
+ myField = ancestorSupers;
+
+ Set<Subject> subjects = null;
+ myField = subjects;
+ Set<? extends Subject> subjectExtends = null;
+ myField = subjectExtends;
+ Set<? super Subject> subjectSupers = null;
+ myField = subjectSupers;
+
+ Set<Descendant> descendants = null;
+ myField = descendants;
+ Set<? extends Descendant> descendantExtends = null;
+ myField = descendantExtends;
+ Set<? super Descendant> descendantSupers = null;
+ myField = descendantSupers;
+
+ Set set = null;
+ myField = set;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.items
new file mode 100644
index 000000000000..9da02a3b248c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.Set
+PsiReferenceExpression:p : java.util.Set
+
+Conversions:
+myField -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.java
new file mode 100644
index 000000000000..f66a7c1fadc0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/after/Type.java
@@ -0,0 +1,10 @@
+import java.util.Set;
+
+class Any {}
+
+class Type {
+ private Set<Any> myField;
+ public void meth(Set p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/before/Type.java
new file mode 100644
index 000000000000..968d7e85e0b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Lvalue/before/Type.java
@@ -0,0 +1,10 @@
+import java.util.Set;
+
+class Any {}
+
+class Type {
+ private Set<Any> myField;
+ public void meth(Set<Any> p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.items
new file mode 100644
index 000000000000..a3dd46449c57
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:myField : java.util.Set
+PsiReferenceExpression:myField : java.util.Set
+
+Conversions:
+p -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.java
new file mode 100644
index 000000000000..f78a0b3d5a68
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/after/Type.java
@@ -0,0 +1,10 @@
+import java.util.Set;
+
+class Any {}
+
+class Type {
+ private Set myField;
+ public void meth(Set<Any> p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/before/Type.java
new file mode 100644
index 000000000000..968d7e85e0b7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeGenRaw2Rvalue/before/Type.java
@@ -0,0 +1,10 @@
+import java.util.Set;
+
+class Any {}
+
+class Type {
+ private Set<Any> myField;
+ public void meth(Set<Any> p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.items
new file mode 100644
index 000000000000..361d3837f2da
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:myField : boolean
+PsiParameter:p : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:p : boolean
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.java
new file mode 100644
index 000000000000..8a5b062df2e6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private boolean myField;
+ public void meth(boolean p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/before/Type.java
new file mode 100644
index 000000000000..b9185a0c81ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Lvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private int myField;
+ public void meth(int p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.items
new file mode 100644
index 000000000000..361d3837f2da
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.items
@@ -0,0 +1,10 @@
+Types:
+PsiField:myField : boolean
+PsiParameter:p : boolean
+PsiReferenceExpression:myField : boolean
+PsiReferenceExpression:p : boolean
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.java
new file mode 100644
index 000000000000..8a5b062df2e6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/after/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private boolean myField;
+ public void meth(boolean p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/before/Type.java
new file mode 100644
index 000000000000..b9185a0c81ed
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubBoolean2Rvalue/before/Type.java
@@ -0,0 +1,6 @@
+class Type {
+ private int myField;
+ public void meth(int p) {
+ myField = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.items
new file mode 100644
index 000000000000..71e76cc5a1e9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.items
@@ -0,0 +1,26 @@
+Types:
+PsiField:myField : byte
+PsiParameter:pc : byte
+PsiParameter:pd : byte
+PsiParameter:pf : byte
+PsiParameter:pi : byte
+PsiParameter:pl : byte
+PsiParameter:ps : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:myField : byte
+PsiReferenceExpression:pc : byte
+PsiReferenceExpression:pd : byte
+PsiReferenceExpression:pf : byte
+PsiReferenceExpression:pi : byte
+PsiReferenceExpression:pl : byte
+PsiReferenceExpression:ps : byte
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.java
new file mode 100644
index 000000000000..ac3a40879f5b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private byte myField;
+ public void meth(byte pb, byte ps, byte pc, byte pi, byte pl, byte pf, byte pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubByte2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.items
new file mode 100644
index 000000000000..521321c601c1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.items
@@ -0,0 +1,22 @@
+Types:
+PsiField:myByte : char
+PsiField:myShort : char
+PsiParameter:p : char
+PsiReferenceExpression:myByte : char
+PsiReferenceExpression:myShort : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+PsiReferenceExpression:p : char
+
+Conversions:
+myDouble -> $
+myFloat -> $
+myInt -> $
+myLong -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.java
new file mode 100644
index 000000000000..8b94e45d5626
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private char myByte;
+ private char myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(char p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.items
new file mode 100644
index 000000000000..404f84f33867
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.items
@@ -0,0 +1,26 @@
+Types:
+PsiField:myField : char
+PsiParameter:pb : char
+PsiParameter:pd : char
+PsiParameter:pf : char
+PsiParameter:pi : char
+PsiParameter:pl : char
+PsiParameter:ps : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:myField : char
+PsiReferenceExpression:pb : char
+PsiReferenceExpression:pd : char
+PsiReferenceExpression:pf : char
+PsiReferenceExpression:pi : char
+PsiReferenceExpression:pl : char
+PsiReferenceExpression:ps : char
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.java
new file mode 100644
index 000000000000..dc346a77074c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private char myField;
+ public void meth(char pb, char ps, char pc, char pi, char pl, char pf, char pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubChar2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.items
new file mode 100644
index 000000000000..6946fcefbac0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.items
@@ -0,0 +1,26 @@
+Types:
+PsiField:myByte : double
+PsiField:myChar : double
+PsiField:myFloat : double
+PsiField:myInt : double
+PsiField:myLong : double
+PsiField:myShort : double
+PsiParameter:p : double
+PsiReferenceExpression:myByte : double
+PsiReferenceExpression:myChar : double
+PsiReferenceExpression:myFloat : double
+PsiReferenceExpression:myInt : double
+PsiReferenceExpression:myLong : double
+PsiReferenceExpression:myShort : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+PsiReferenceExpression:p : double
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.java
new file mode 100644
index 000000000000..8a5035c81e4d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private double myByte;
+ private double myShort;
+ private double myChar;
+ private double myInt;
+ private double myLong;
+ private double myFloat;
+ private double myDouble;
+ public void meth(double p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubDouble2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.items
new file mode 100644
index 000000000000..c479836287e0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.items
@@ -0,0 +1,25 @@
+Types:
+PsiField:myByte : float
+PsiField:myChar : float
+PsiField:myInt : float
+PsiField:myLong : float
+PsiField:myShort : float
+PsiParameter:p : float
+PsiReferenceExpression:myByte : float
+PsiReferenceExpression:myChar : float
+PsiReferenceExpression:myInt : float
+PsiReferenceExpression:myLong : float
+PsiReferenceExpression:myShort : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+PsiReferenceExpression:p : float
+
+Conversions:
+myDouble -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.java
new file mode 100644
index 000000000000..8b59184de85f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private float myByte;
+ private float myShort;
+ private float myChar;
+ private float myInt;
+ private float myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(float p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.items
new file mode 100644
index 000000000000..7a22f6771caf
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.items
@@ -0,0 +1,21 @@
+Types:
+PsiField:myField : float
+PsiParameter:pd : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:myField : float
+PsiReferenceExpression:pd : float
+
+Conversions:
+pb -> $
+pc -> $
+pi -> $
+pl -> $
+ps -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.java
new file mode 100644
index 000000000000..0b933cce77dd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private float myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, float pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubFloat2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.items
new file mode 100644
index 000000000000..200b3b8b3fb5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.items
@@ -0,0 +1,23 @@
+Types:
+PsiField:myByte : int
+PsiField:myChar : int
+PsiField:myShort : int
+PsiParameter:p : int
+PsiReferenceExpression:myByte : int
+PsiReferenceExpression:myChar : int
+PsiReferenceExpression:myShort : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+PsiReferenceExpression:p : int
+
+Conversions:
+myDouble -> $
+myFloat -> $
+myLong -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.java
new file mode 100644
index 000000000000..b15830da724d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private int myByte;
+ private int myShort;
+ private int myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(int p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.items
new file mode 100644
index 000000000000..b7c45d6a6aff
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.items
@@ -0,0 +1,23 @@
+Types:
+PsiField:myField : int
+PsiParameter:pd : int
+PsiParameter:pf : int
+PsiParameter:pl : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:myField : int
+PsiReferenceExpression:pd : int
+PsiReferenceExpression:pf : int
+PsiReferenceExpression:pl : int
+
+Conversions:
+pb -> $
+pc -> $
+ps -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.java
new file mode 100644
index 000000000000..c13b0ab9bee2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private int myField;
+ public void meth(byte pb, short ps, char pc, int pi, int pl, int pf, int pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubInt2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.items
new file mode 100644
index 000000000000..3f94bd20c6e8
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.items
@@ -0,0 +1,24 @@
+Types:
+PsiField:myByte : long
+PsiField:myChar : long
+PsiField:myInt : long
+PsiField:myShort : long
+PsiParameter:p : long
+PsiReferenceExpression:myByte : long
+PsiReferenceExpression:myChar : long
+PsiReferenceExpression:myInt : long
+PsiReferenceExpression:myShort : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+PsiReferenceExpression:p : long
+
+Conversions:
+myDouble -> $
+myFloat -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.java
new file mode 100644
index 000000000000..1b594666283c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private long myByte;
+ private long myShort;
+ private long myChar;
+ private long myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(long p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.items
new file mode 100644
index 000000000000..98a3c92987b9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.items
@@ -0,0 +1,22 @@
+Types:
+PsiField:myField : long
+PsiParameter:pd : long
+PsiParameter:pf : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:myField : long
+PsiReferenceExpression:pd : long
+PsiReferenceExpression:pf : long
+
+Conversions:
+pb -> $
+pc -> $
+pi -> $
+ps -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.java
new file mode 100644
index 000000000000..e3e3b25d89b4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private long myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, long pf, long pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubLong2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.items
new file mode 100644
index 000000000000..8f0cd52a3560
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.items
@@ -0,0 +1,22 @@
+Types:
+PsiField:myByte : short
+PsiField:myChar : short
+PsiParameter:p : short
+PsiReferenceExpression:myByte : short
+PsiReferenceExpression:myChar : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+PsiReferenceExpression:p : short
+
+Conversions:
+myDouble -> $
+myFloat -> $
+myInt -> $
+myLong -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.java
new file mode 100644
index 000000000000..ccbe23c4b4e2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private short myByte;
+ private short myShort;
+ private short myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(short p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/before/Type.java
new file mode 100644
index 000000000000..2d55ceaa511a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+class Type {
+ private byte myByte;
+ private short myShort;
+ private char myChar;
+ private int myInt;
+ private long myLong;
+ private float myFloat;
+ private double myDouble;
+ public void meth(byte p) {
+ myByte = p;
+ myShort = p;
+ myChar = p;
+ myInt = p;
+ myLong = p;
+ myFloat = p;
+ myDouble = p;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.items
new file mode 100644
index 000000000000..754060e723ec
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.items
@@ -0,0 +1,25 @@
+Types:
+PsiField:myField : short
+PsiParameter:pc : short
+PsiParameter:pd : short
+PsiParameter:pf : short
+PsiParameter:pi : short
+PsiParameter:pl : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:myField : short
+PsiReferenceExpression:pc : short
+PsiReferenceExpression:pd : short
+PsiReferenceExpression:pf : short
+PsiReferenceExpression:pi : short
+PsiReferenceExpression:pl : short
+
+Conversions:
+pb -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.java
new file mode 100644
index 000000000000..eb53bcd49ebc
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/after/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private short myField;
+ public void meth(byte pb, short ps, short pc, short pi, short pl, short pf, short pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/before/Type.java
new file mode 100644
index 000000000000..f7edce2eea98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typePrimsubShort2Rvalue/before/Type.java
@@ -0,0 +1,12 @@
+class Type {
+ private double myField;
+ public void meth(byte pb, short ps, char pc, int pi, long pl, float pf, double pd) {
+ myField = pb;
+ myField = ps;
+ myField = pc;
+ myField = pi;
+ myField = pl;
+ myField = pf;
+ myField = pd;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.items
new file mode 100644
index 000000000000..78431b6e4a4a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myField : ClassChild
+PsiParameter:pcp : ClassChild
+PsiParameter:pfc : ClassChild
+PsiParameter:pfp : ClassChild
+PsiReferenceExpression:myField : ClassChild
+PsiReferenceExpression:myField : ClassChild
+PsiReferenceExpression:myField : ClassChild
+PsiReferenceExpression:myField : ClassChild
+PsiReferenceExpression:pcp : ClassChild
+PsiReferenceExpression:pfc : ClassChild
+PsiReferenceExpression:pfp : ClassChild
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.java
new file mode 100644
index 000000000000..f5d9434c07c4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/after/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassChild myField;
+ public void meth(ClassChild pcc, ClassChild pcp, ClassChild pfc, ClassChild pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/before/Type.java
new file mode 100644
index 000000000000..e5cfab9f9af5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassChild2Rvalue/before/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceParent myField;
+ public void meth(ClassChild pcc, ClassParent pcp, FaceChild pfc, FaceParent pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.items
new file mode 100644
index 000000000000..18fce6b3d6ec
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiField:myClassChild : ClassParent
+PsiParameter:p : ClassParent
+PsiReferenceExpression:myClassChild : ClassParent
+PsiReferenceExpression:p : ClassParent
+PsiReferenceExpression:p : ClassParent
+PsiReferenceExpression:p : ClassParent
+PsiReferenceExpression:p : ClassParent
+
+Conversions:
+myFaceChild -> $
+myFaceParent -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.java
new file mode 100644
index 000000000000..8d7fee567890
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassParent myClassChild;
+ private ClassParent myClassParent;
+ private FaceChild myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(ClassParent p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/before/Type.java
new file mode 100644
index 000000000000..074af076748d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassChild myClassChild;
+ private ClassParent myClassParent;
+ private FaceChild myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(ClassChild p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.items
new file mode 100644
index 000000000000..4e7bfb9a5f9a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myField : ClassParent
+PsiParameter:pfc : ClassParent
+PsiParameter:pfp : ClassParent
+PsiReferenceExpression:myField : ClassParent
+PsiReferenceExpression:myField : ClassParent
+PsiReferenceExpression:myField : ClassParent
+PsiReferenceExpression:myField : ClassParent
+PsiReferenceExpression:pfc : ClassParent
+PsiReferenceExpression:pfp : ClassParent
+
+Conversions:
+pcc -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.java
new file mode 100644
index 000000000000..9953f41083c5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/after/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassParent myField;
+ public void meth(ClassChild pcc, ClassParent pcp, ClassParent pfc, ClassParent pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/before/Type.java
new file mode 100644
index 000000000000..e5cfab9f9af5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefClassParent2Rvalue/before/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceParent myField;
+ public void meth(ClassChild pcc, ClassParent pcp, FaceChild pfc, FaceParent pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.items
new file mode 100644
index 000000000000..9dd227a952df
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.items
@@ -0,0 +1,16 @@
+Types:
+PsiField:myClassChild : FaceChild
+PsiField:myClassParent : FaceChild
+PsiParameter:p : FaceChild
+PsiReferenceExpression:myClassChild : FaceChild
+PsiReferenceExpression:myClassParent : FaceChild
+PsiReferenceExpression:p : FaceChild
+PsiReferenceExpression:p : FaceChild
+PsiReferenceExpression:p : FaceChild
+PsiReferenceExpression:p : FaceChild
+
+Conversions:
+myFaceParent -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.java
new file mode 100644
index 000000000000..f4b8de1d6028
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceChild myClassChild;
+ private FaceChild myClassParent;
+ private FaceChild myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(FaceChild p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/before/Type.java
new file mode 100644
index 000000000000..074af076748d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassChild myClassChild;
+ private ClassParent myClassParent;
+ private FaceChild myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(ClassChild p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.items
new file mode 100644
index 000000000000..91683c097f98
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.items
@@ -0,0 +1,15 @@
+Types:
+PsiField:myField : FaceChild
+PsiParameter:pfp : FaceChild
+PsiReferenceExpression:myField : FaceChild
+PsiReferenceExpression:myField : FaceChild
+PsiReferenceExpression:myField : FaceChild
+PsiReferenceExpression:myField : FaceChild
+PsiReferenceExpression:pfp : FaceChild
+
+Conversions:
+pcc -> $
+pcp -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.java
new file mode 100644
index 000000000000..f16470efa1df
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/after/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceChild myField;
+ public void meth(ClassChild pcc, ClassParent pcp, FaceChild pfc, FaceChild pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/before/Type.java
new file mode 100644
index 000000000000..e5cfab9f9af5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceChild2Rvalue/before/Type.java
@@ -0,0 +1,14 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceParent myField;
+ public void meth(ClassChild pcc, ClassParent pcp, FaceChild pfc, FaceParent pfp) {
+ myField = pcc;
+ myField = pcp;
+ myField = pfc;
+ myField = pfp;
+ }
+}
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.items b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.items
new file mode 100644
index 000000000000..a10aad579ef2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.items
@@ -0,0 +1,17 @@
+Types:
+PsiField:myClassChild : FaceParent
+PsiField:myClassParent : FaceParent
+PsiField:myFaceChild : FaceParent
+PsiParameter:p : FaceParent
+PsiReferenceExpression:myClassChild : FaceParent
+PsiReferenceExpression:myClassParent : FaceParent
+PsiReferenceExpression:myFaceChild : FaceParent
+PsiReferenceExpression:p : FaceParent
+PsiReferenceExpression:p : FaceParent
+PsiReferenceExpression:p : FaceParent
+PsiReferenceExpression:p : FaceParent
+
+Conversions:
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.java
new file mode 100644
index 000000000000..d53c072b9b56
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/after/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private FaceParent myClassChild;
+ private FaceParent myClassParent;
+ private FaceParent myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(FaceParent p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/before/Type.java b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/before/Type.java
new file mode 100644
index 000000000000..074af076748d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/migrateTypeSignature/typeRefFaceParent2Lvalue/before/Type.java
@@ -0,0 +1,18 @@
+interface FaceParent {}
+interface FaceChild extends FaceParent {}
+class ClassParent implements FaceChild {}
+class ClassChild extends ClassParent {}
+
+class Type {
+ private ClassChild myClassChild;
+ private ClassParent myClassParent;
+ private FaceChild myFaceChild;
+ private FaceParent myFaceParent;
+
+ public void meth(ClassChild p) {
+ myClassChild = p;
+ myClassParent = p;
+ myFaceChild = p;
+ myFaceParent = p;
+ }
+} \ No newline at end of file
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
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.items
new file mode 100644
index 000000000000..9d1b1894378f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.items
@@ -0,0 +1,25 @@
+Types:
+PsiAssignmentExpression:i += 2 : java.util.concurrent.atomic.AtomicInteger
+PsiAssignmentExpression:i -= 5 : java.util.concurrent.atomic.AtomicInteger
+PsiBinaryExpression:i + 9 : int
+PsiBinaryExpression:i - 9 : int
+PsiBinaryExpression:i == 0 : boolean
+PsiField:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+
+Conversions:
+0 -> new java.util.concurrent.atomic.AtomicInteger($val$) $val$
+9 -> $qualifier$.set($val$) $qualifier$ = $val$ i = 9
+i + 9 -> $qualifier$.get() + $val$ $qualifier$+$val$
+i += 2 -> $qualifier$.getAndAdd(($val$)) $qualifier$ += $val$
+i - 9 -> $qualifier$.get() - $val$ $qualifier$-$val$
+i -= 5 -> $qualifier$.getAndAdd(-($val$)) $qualifier$ -= $val$
+i == 0 -> $qualifier$.get() == $val$ $qualifier$==$val$
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.java
new file mode 100644
index 000000000000..5c16607a8b70
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/after/Test.java
@@ -0,0 +1,16 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+class Test {
+ AtomicInteger i = new AtomicInteger(0);
+
+ void foo() {
+ i.getAndAdd((2));
+ i.getAndAdd(-(5));
+ if (i.get() == 0) {
+ i.set(9);
+ }
+
+ System.out.println(i.get() + 9);
+ System.out.println(i.get() - 9);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/before/Test.java
new file mode 100644
index 000000000000..b96f02057dfd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directAssignments/before/Test.java
@@ -0,0 +1,14 @@
+class Test {
+ int i = 0;
+
+ void foo() {
+ i += 2;
+ i -= 5;
+ if (i == 0) {
+ i = 9;
+ }
+
+ System.out.println(i + 9);
+ System.out.println(i - 9);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.items
new file mode 100644
index 000000000000..e0e121ecf00d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.items
@@ -0,0 +1,19 @@
+Types:
+PsiAssignmentExpression:b += 0 : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiBinaryExpression:b == 0 : boolean
+PsiField:b : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiPostfixExpression:b++ : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicReference<java.lang.Byte>
+
+Conversions:
+0 -> new java.util.concurrent.atomic.AtomicReference<java.lang.Byte>((byte)$val$) $val$
+b += 0 -> $qualifier$.set(new Byte((byte)($qualifier$.get() + $val$))) $qualifier$+=$val$
+b -> $qualifier$.get() $qualifier$ b
+b == 0 -> $qualifier$.get() == $val$ $qualifier$==$val$
+b++ -> $qualifier$.getAndSet(new Byte((byte)($qualifier$.get() + 1))) $qualifier$++
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.java
new file mode 100644
index 000000000000..a1dbfc714326
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/after/Test.java
@@ -0,0 +1,14 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ AtomicReference<Byte> b = new AtomicReference<Byte>((byte) 0);
+
+ void bar() {
+ if (b.get() == 0) {
+ b.getAndSet(new Byte((byte) (b.get() + 1)));
+ b.set(new Byte((byte) (b.get() + 0)));
+ //System.out.println(b + 10);
+ System.out.println(b.get());
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/before/Test.java
new file mode 100644
index 000000000000..fa494c28a3c4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directByte/before/Test.java
@@ -0,0 +1,12 @@
+class Test {
+ byte b = 0;
+
+ void bar() {
+ if (b == 0) {
+ b++;
+ b += 0;
+ //System.out.println(b + 10);
+ System.out.println(b);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.items
new file mode 100644
index 000000000000..95f366691485
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:b : java.util.concurrent.atomic.AtomicBoolean
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicBoolean
+PsiReferenceExpression:b : java.util.concurrent.atomic.AtomicBoolean
+
+Conversions:
+b -> $qualifier$.get() $qualifier$ b
+true -> $qualifier$.set($val$) $qualifier$ = $val$ b = true
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.java
new file mode 100644
index 000000000000..02fc40276a86
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/after/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicBoolean;
+
+class Test {
+ AtomicBoolean b;
+
+ void foo() {
+ if (b.get()) {
+ b.set(true);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/before/Test.java
new file mode 100644
index 000000000000..ef5413600c40
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directConditions/before/Test.java
@@ -0,0 +1,9 @@
+class Test {
+ boolean b;
+
+ void foo() {
+ if (b) {
+ b = true;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.items
new file mode 100644
index 000000000000..add3ea1f98e3
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiField:lst : java.util.concurrent.atomic.AtomicReference<java.util.List<java.lang.String>>
+PsiReferenceExpression:lst : java.util.concurrent.atomic.AtomicReference<java.util.List<java.lang.String>>
+
+Conversions:
+lst -> $qualifier$.get() $qualifier$ lst
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.java
new file mode 100644
index 000000000000..4db9a5619849
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/after/Test.java
@@ -0,0 +1,12 @@
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ AtomicReference<List<String>> lst;
+
+ void foo() {
+ for (String s : lst.get()) {
+ System.out.println(s);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/before/Test.java
new file mode 100644
index 000000000000..1d40f4082444
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directForeach/before/Test.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+class Test {
+ List<String> lst;
+
+ void foo() {
+ for (String s : lst) {
+ System.out.println(s);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.items
new file mode 100644
index 000000000000..852aa470a285
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.items
@@ -0,0 +1,25 @@
+Types:
+PsiField:i : java.util.concurrent.atomic.AtomicInteger
+PsiPostfixExpression:i++ : java.util.concurrent.atomic.AtomicInteger
+PsiPostfixExpression:i++ : java.util.concurrent.atomic.AtomicInteger
+PsiPostfixExpression:i-- : java.util.concurrent.atomic.AtomicInteger
+PsiPrefixExpression:++i : java.util.concurrent.atomic.AtomicInteger
+PsiPrefixExpression:--i : java.util.concurrent.atomic.AtomicInteger
+PsiPrefixExpression:--i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+PsiReferenceExpression:i : java.util.concurrent.atomic.AtomicInteger
+
+Conversions:
+++i -> $qualifier$.incrementAndGet() ++$qualifier$
+--i -> $qualifier$.decrementAndGet() --$qualifier$
+--i -> $qualifier$.decrementAndGet() --$qualifier$
+i++ -> $qualifier$.getAndIncrement() $qualifier$++
+i++ -> $qualifier$.getAndIncrement() $qualifier$++
+i-- -> $qualifier$.getAndDecrement() $qualifier$--
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.java
new file mode 100644
index 000000000000..bdcf7171016b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/after/Test.java
@@ -0,0 +1,14 @@
+import java.util.concurrent.atomic.AtomicInteger;
+
+class Test {
+ AtomicInteger i;
+
+ void foo() {
+ i.getAndIncrement();
+ i.incrementAndGet();
+ i.getAndDecrement();
+ i.decrementAndGet();
+ System.out.println(i.getAndIncrement());
+ System.out.println(i.decrementAndGet());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/before/Test.java
new file mode 100644
index 000000000000..be6aa55d5f29
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIncrementDecrement/before/Test.java
@@ -0,0 +1,12 @@
+class Test {
+ int i;
+
+ void foo() {
+ i++;
+ ++i;
+ i--;
+ --i;
+ System.out.println(i++);
+ System.out.println(--i);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.items
new file mode 100644
index 000000000000..69a66c34a6cb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.items
@@ -0,0 +1,34 @@
+Types:
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiArrayAccessExpression:a[0] : int
+PsiField:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray
+
+Conversions:
+a[0] -> $qualifier$.decrementAndGet($idx$) --$qualifier$[$idx$] --a[0]
+a[0] -> $qualifier$.get($idx$) $qualifier$[$idx$] a[0]
+a[0] -> $qualifier$.get($idx$) $qualifier$[$idx$] a[0]
+a[0] -> $qualifier$.getAndAdd($idx$, ($val$)) $qualifier$[$idx$] += $val$ a[0] += (2)
+a[0] -> $qualifier$.getAndDecrement($idx$) $qualifier$[$idx$]-- a[0]--
+a[0] -> $qualifier$.getAndIncrement($idx$) $qualifier$[$idx$]++ a[0]++
+a[0] -> $qualifier$.incrementAndGet($idx$) ++$qualifier$[$idx$] ++a[0]
+a[0] -> $qualifier$.set($idx$, $qualifier$.get($idx$) * $val$) $qualifier$[$idx$]*=$val$ a[0] *= 2
+new int[0] -> new java.util.concurrent.atomic.AtomicIntegerArray($val$) $val$ new int[0]
+new int[1] -> new java.util.concurrent.atomic.AtomicIntegerArray($val$) $val$ new int[1]
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.java
new file mode 100644
index 000000000000..8dbba12048fe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/after/Test.java
@@ -0,0 +1,20 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+class Test {
+ AtomicIntegerArray a = new AtomicIntegerArray(new int[1]);
+
+
+ void foo() {
+ a.getAndIncrement(0);
+ System.out.println(a.incrementAndGet(0));
+ a.getAndDecrement(0);
+ if (a.decrementAndGet(0) == 0) {
+ a.getAndAdd(0, ((2)));
+ a.set(0, a.get(0) * 2);
+ if (a.get(0) == 0) {
+ System.out.println(a.get(0) + 7);
+ }
+ }
+ a = new AtomicIntegerArray(new int[0]);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/before/Test.java
new file mode 100644
index 000000000000..5d39cf2963c6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directIntArray/before/Test.java
@@ -0,0 +1,18 @@
+class Test {
+ int[] a = new int[1];
+
+
+ void foo() {
+ a[0]++;
+ System.out.println(++a[0]);
+ a[0]--;
+ if (--a[0] == 0) {
+ a[0] += (2);
+ a[0] *= 2;
+ if (a[0] == 0) {
+ System.out.println(a[0] + 7);
+ }
+ }
+ a = new int[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.items
new file mode 100644
index 000000000000..0d306b0b4747
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:s : java.util.concurrent.atomic.AtomicReference<java.lang.String>
+PsiReferenceExpression:s : java.util.concurrent.atomic.AtomicReference<java.lang.String>
+PsiReferenceExpression:s : java.util.concurrent.atomic.AtomicReference<java.lang.String>
+
+Conversions:
+"" -> new java.util.concurrent.atomic.AtomicReference<java.lang.String>($val$) $val$
+s -> $qualifier$.get() $qualifier$ s
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.java
new file mode 100644
index 000000000000..cb32e0ba130b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/after/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ AtomicReference<String> s = new AtomicReference<String>("");
+
+ void foo() {
+ if (s == null) {
+ System.out.println(s.get());
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/before/Test.java
new file mode 100644
index 000000000000..1770416a0295
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directString/before/Test.java
@@ -0,0 +1,9 @@
+class Test {
+ String s = "";
+
+ void foo() {
+ if (s == null) {
+ System.out.println(s);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.items
new file mode 100644
index 000000000000..b90b4a347f40
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.items
@@ -0,0 +1,14 @@
+Types:
+PsiArrayAccessExpression:s[0] : java.lang.String
+PsiArrayAccessExpression:s[0] : java.lang.String
+PsiField:s : java.util.concurrent.atomic.AtomicReferenceArray<java.lang.String>
+PsiReferenceExpression:s : java.util.concurrent.atomic.AtomicReferenceArray<java.lang.String>
+PsiReferenceExpression:s : java.util.concurrent.atomic.AtomicReferenceArray<java.lang.String>
+
+Conversions:
+new String[2] -> new java.util.concurrent.atomic.AtomicReferenceArray<java.lang.String>($val$) $val$ new String[2]
+s[0] -> $qualifier$.get($idx$) $qualifier$[$idx$] s[0]
+s[0] -> $qualifier$.set($idx$, $val$) $qualifier$[$idx$] = $val$ s[0] = ""
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.java
new file mode 100644
index 000000000000..42415d0c3141
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/after/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReferenceArray;
+
+class Test {
+ AtomicReferenceArray<String> s = new AtomicReferenceArray<String>(new String[2]);
+
+ void foo() {
+ s.set(0, "");
+ System.out.println(s.get(0));
+
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/before/Test.java
new file mode 100644
index 000000000000..4f19feba6479
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/directStringArray/before/Test.java
@@ -0,0 +1,9 @@
+class Test {
+ String[] s = new String[2];
+
+ void foo() {
+ s[0] = "";
+ System.out.println(s[0]);
+
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.items
new file mode 100644
index 000000000000..767993764c48
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.items
@@ -0,0 +1,26 @@
+Types:
+PsiField:i : int
+PsiMethodCallExpression:i.addAndGet(-(9)) : int
+PsiMethodCallExpression:i.addAndGet(9) : int
+PsiMethodCallExpression:i.get() : int
+PsiMethodCallExpression:i.getAndAdd(-5) : int
+PsiMethodCallExpression:i.getAndAdd(2) : int
+PsiMethodCallExpression:i.set(9) : void
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+
+Conversions:
+i.addAndGet(-(9)) -> $qualifier$ + $delta$ $qualifier$.addAndGet($delta$)
+i.addAndGet(9) -> $qualifier$ + $delta$ $qualifier$.addAndGet($delta$)
+i.get() -> $qualifier$ $qualifier$.get()
+i.getAndAdd(-5) -> $qualifier$ += $val$ $qualifier$.getAndAdd($val$)
+i.getAndAdd(2) -> $qualifier$ += $val$ $qualifier$.getAndAdd($val$)
+i.set(9) -> $qualifier$ = $val$ $qualifier$.set($val$)
+new AtomicInteger(0) -> $qualifier$ new $type$($qualifier$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.java
new file mode 100644
index 000000000000..1372ccee2b27
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/after/Test.java
@@ -0,0 +1,15 @@
+import java.util.concurrent.atomic.AtomicInteger;
+class Test {
+ int i = 0;
+
+ void foo() {
+ i += 2;
+ i += -5;
+ if (i == 0) {
+ i = 9;
+ }
+
+ System.out.println(i + 9);
+ System.out.println(i + -(9));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/before/Test.java
new file mode 100644
index 000000000000..cfd312daa073
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseAssignments/before/Test.java
@@ -0,0 +1,15 @@
+import java.util.concurrent.atomic.AtomicInteger;
+class Test {
+ AtomicInteger i = new AtomicInteger(0);
+
+ void foo() {
+ i.getAndAdd(2);
+ i.getAndAdd(-5);
+ if (i.get() == 0) {
+ i.set(9);
+ }
+
+ System.out.println(i.addAndGet(9));
+ System.out.println(i.addAndGet(-(9)));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.items
new file mode 100644
index 000000000000..8585bda9e020
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.items
@@ -0,0 +1,26 @@
+Types:
+PsiField:b : byte
+PsiMethodCallExpression:b.get() : java.lang.Byte
+PsiMethodCallExpression:b.get() : java.lang.Byte
+PsiMethodCallExpression:b.get() : java.lang.Byte
+PsiMethodCallExpression:b.get() : java.lang.Byte
+PsiMethodCallExpression:b.getAndSet(new Byte((byte) (b.get() + 1))) : java.lang.Byte
+PsiMethodCallExpression:b.set(new Byte((byte) (b.get() + 0))) : void
+PsiReferenceExpression:b : byte
+PsiReferenceExpression:b : byte
+PsiReferenceExpression:b : byte
+PsiReferenceExpression:b : byte
+PsiReferenceExpression:b : byte
+PsiReferenceExpression:b : byte
+
+Conversions:
+b.get() -> $qualifier$ $qualifier$.get()
+b.get() -> $qualifier$ $qualifier$.get()
+b.get() -> $qualifier$ $qualifier$.get()
+b.get() -> $qualifier$ $qualifier$.get()
+b.getAndSet(new Byte((byte) (b.get() + 1))) -> $qualifier$ = $val$ $qualifier$.getAndSet($val$)
+b.set(new Byte((byte) (b.get() + 0))) -> $qualifier$ = $val$ $qualifier$.set($val$)
+new AtomicReference<Byte>((byte) 0) -> $qualifier$ new $type$($qualifier$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.java
new file mode 100644
index 000000000000..28445dd31728
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/after/Test.java
@@ -0,0 +1,14 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ byte b = (byte) 0;
+
+ void bar() {
+ if (b == 0) {
+ b = new Byte((byte) (b + 1));
+ b = new Byte((byte) (b + 0));
+ //System.out.println(b + 10);
+ System.out.println(b);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/before/Test.java
new file mode 100644
index 000000000000..a1dbfc714326
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseByte/before/Test.java
@@ -0,0 +1,14 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ AtomicReference<Byte> b = new AtomicReference<Byte>((byte) 0);
+
+ void bar() {
+ if (b.get() == 0) {
+ b.getAndSet(new Byte((byte) (b.get() + 1)));
+ b.set(new Byte((byte) (b.get() + 0)));
+ //System.out.println(b + 10);
+ System.out.println(b.get());
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.items
new file mode 100644
index 000000000000..3594508bebe5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.items
@@ -0,0 +1,13 @@
+Types:
+PsiField:b : boolean
+PsiMethodCallExpression:b.get() : boolean
+PsiMethodCallExpression:b.set(true) : void
+PsiReferenceExpression:b : boolean
+PsiReferenceExpression:b : boolean
+
+Conversions:
+b.get() -> $qualifier$ $qualifier$.get()
+b.set(true) -> $qualifier$ = $val$ $qualifier$.set($val$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.java
new file mode 100644
index 000000000000..92f515c35936
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/after/Test.java
@@ -0,0 +1,10 @@
+import java.util.concurrent.atomic.AtomicBoolean;
+class Test {
+ boolean b;
+
+ void foo() {
+ if (b) {
+ b = true;
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/before/Test.java
new file mode 100644
index 000000000000..5464f705ddeb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseConditions/before/Test.java
@@ -0,0 +1,10 @@
+import java.util.concurrent.atomic.AtomicBoolean;
+class Test {
+ AtomicBoolean b;
+
+ void foo() {
+ if (b.get()) {
+ b.set(true);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.items
new file mode 100644
index 000000000000..cba5bc10f359
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.items
@@ -0,0 +1,25 @@
+Types:
+PsiField:i : int
+PsiMethodCallExpression:i.decrementAndGet() : int
+PsiMethodCallExpression:i.decrementAndGet() : int
+PsiMethodCallExpression:i.getAndDecrement() : int
+PsiMethodCallExpression:i.getAndIncrement() : int
+PsiMethodCallExpression:i.getAndIncrement() : int
+PsiMethodCallExpression:i.incrementAndGet() : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+PsiReferenceExpression:i : int
+
+Conversions:
+i.decrementAndGet() -> --$qualifier$ $qualifier$.decrementAndGet()
+i.decrementAndGet() -> --$qualifier$ $qualifier$.decrementAndGet()
+i.getAndDecrement() -> $qualifier$-- $qualifier$.getAndDecrement()
+i.getAndIncrement() -> $qualifier$++ $qualifier$.getAndIncrement()
+i.getAndIncrement() -> $qualifier$++ $qualifier$.getAndIncrement()
+i.incrementAndGet() -> ++$qualifier$ $qualifier$.incrementAndGet()
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.java
new file mode 100644
index 000000000000..dd70e550a751
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/after/Test.java
@@ -0,0 +1,13 @@
+import java.util.concurrent.atomic.AtomicInteger;
+class Test {
+ int i;
+
+ void foo() {
+ i++;
+ ++i;
+ i--;
+ --i;
+ System.out.println(i++);
+ System.out.println(--i);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/before/Test.java
new file mode 100644
index 000000000000..853e5387aca9
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIncrementDecrement/before/Test.java
@@ -0,0 +1,13 @@
+import java.util.concurrent.atomic.AtomicInteger;
+class Test {
+ AtomicInteger i;
+
+ void foo() {
+ i.getAndIncrement();
+ i.incrementAndGet();
+ i.getAndDecrement();
+ i.decrementAndGet();
+ System.out.println(i.getAndIncrement());
+ System.out.println(i.decrementAndGet());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.items
new file mode 100644
index 000000000000..55c1c7bc2574
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.items
@@ -0,0 +1,35 @@
+Types:
+PsiField:a : int[]
+PsiMethodCallExpression:a.addAndGet(0, 7) : int
+PsiMethodCallExpression:a.decrementAndGet(0) : int
+PsiMethodCallExpression:a.get(0) : int
+PsiMethodCallExpression:a.get(0) : int
+PsiMethodCallExpression:a.getAndAdd(0, ((2))) : int
+PsiMethodCallExpression:a.getAndDecrement(0) : int
+PsiMethodCallExpression:a.getAndIncrement(0) : int
+PsiMethodCallExpression:a.incrementAndGet(0) : int
+PsiMethodCallExpression:a.set(0, a.get(0) * 2) : void
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+PsiReferenceExpression:a : int[]
+
+Conversions:
+a.addAndGet(0, 7) -> $qualifier$[$idx$] + $delta$ $qualifier$.addAndGet($idx$, $delta$)
+a.decrementAndGet(0) -> --$qualifier$[$idx$] $qualifier$.decrementAndGet($idx$)
+a.get(0) -> $qualifier$[$idx$] $qualifier$.get($idx$)
+a.get(0) -> $qualifier$[$idx$] $qualifier$.get($idx$)
+a.getAndAdd(0, ((2))) -> $qualifier$[$idx$] += $val$ $qualifier$.getAndAdd($idx$, $val$)
+a.getAndDecrement(0) -> $qualifier$[$idx$]-- $qualifier$.getAndDecrement($idx$)
+a.getAndIncrement(0) -> $qualifier$[$idx$]++ $qualifier$.getAndIncrement($idx$)
+a.incrementAndGet(0) -> ++$qualifier$[$idx$] $qualifier$.incrementAndGet($idx$)
+a.set(0, a.get(0) * 2) -> $qualifier$[$idx$] = $val$ $qualifier$.set($idx$, $val$)
+new AtomicIntegerArray(new int[1]) -> $qualifier$ new $type$($qualifier$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.java
new file mode 100644
index 000000000000..401714230d3c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/after/Test.java
@@ -0,0 +1,19 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+class Test {
+ int[] a = new int[1];
+
+
+ void foo() {
+ a[0]++;
+ System.out.println(++a[0]);
+ a[0]--;
+ if (--a[0] == 0) {
+ a[0] += ((2));
+ a[0] = a[0] * 2;
+ if (a[0] == 0) {
+ System.out.println(a[0] + 7);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/before/Test.java
new file mode 100644
index 000000000000..df31528b9d7e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseIntArray/before/Test.java
@@ -0,0 +1,19 @@
+import java.util.concurrent.atomic.AtomicIntegerArray;
+
+class Test {
+ AtomicIntegerArray a = new AtomicIntegerArray(new int[1]);
+
+
+ void foo() {
+ a.getAndIncrement(0);
+ System.out.println(a.incrementAndGet(0));
+ a.getAndDecrement(0);
+ if (a.decrementAndGet(0) == 0) {
+ a.getAndAdd(0, ((2)));
+ a.set(0, a.get(0) * 2);
+ if (a.get(0) == 0) {
+ System.out.println(a.addAndGet(0, 7));
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.items
new file mode 100644
index 000000000000..7c23d49d8bfd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiField:s : java.lang.String
+PsiMethodCallExpression:s.get() : java.lang.String
+PsiReferenceExpression:s : java.lang.String
+PsiReferenceExpression:s : java.lang.String
+
+Conversions:
+new AtomicReference<String>("") -> $qualifier$ new $type$($qualifier$)
+s.get() -> $qualifier$ $qualifier$.get()
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.java
new file mode 100644
index 000000000000..a0106ff8d66f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/after/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ String s = "";
+
+ void foo() {
+ if (s == null) {
+ System.out.println(s);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/before/Test.java
new file mode 100644
index 000000000000..cb32e0ba130b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseString/before/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReference;
+
+class Test {
+ AtomicReference<String> s = new AtomicReference<String>("");
+
+ void foo() {
+ if (s == null) {
+ System.out.println(s.get());
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.items
new file mode 100644
index 000000000000..eaf82b5cc2e6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.items
@@ -0,0 +1,14 @@
+Types:
+PsiField:s : java.lang.String[]
+PsiMethodCallExpression:s.get(0) : java.lang.String
+PsiMethodCallExpression:s.set(0, "") : void
+PsiReferenceExpression:s : java.lang.String[]
+PsiReferenceExpression:s : java.lang.String[]
+
+Conversions:
+new AtomicReferenceArray<String>(new String[2]) -> $qualifier$ new $type$($qualifier$)
+s.get(0) -> $qualifier$[$idx$] $qualifier$.get($idx$)
+s.set(0, "") -> $qualifier$[$idx$] = $val$ $qualifier$.set($idx$, $val$)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.java
new file mode 100644
index 000000000000..0c64ea445f01
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/after/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReferenceArray;
+
+class Test {
+ String[] s = new String[2];
+
+ void foo() {
+ s[0] = "";
+ System.out.println(s[0]);
+
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/before/Test.java
new file mode 100644
index 000000000000..fbc97bc2eb36
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByAtomic/reverseStringArray/before/Test.java
@@ -0,0 +1,11 @@
+import java.util.concurrent.atomic.AtomicReferenceArray;
+
+class Test {
+ AtomicReferenceArray<String> s = new AtomicReferenceArray<String>(new String[2]);
+
+ void foo() {
+ s.set(0, "");
+ System.out.println(s.get(0));
+
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.items
new file mode 100644
index 000000000000..e01b4b5e1f8b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.items
@@ -0,0 +1,22 @@
+Types:
+PsiBinaryExpression:i == 0 : boolean
+PsiField:i : java.lang.ThreadLocal<java.lang.Byte>
+PsiPostfixExpression:i++ : java.lang.ThreadLocal<java.lang.Byte>
+PsiPostfixExpression:i-- : java.lang.ThreadLocal<java.lang.Byte>
+PsiPrefixExpression:++i : java.lang.ThreadLocal<java.lang.Byte>
+PsiPrefixExpression:--i : java.lang.ThreadLocal<java.lang.Byte>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Byte>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Byte>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Byte>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Byte>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Byte>
+
+Conversions:
+++i -> $qualifier$.set(new java.lang.Byte((byte)($qualifier$.get() + 1))) ++$qualifier$
+--i -> $qualifier$.set(new java.lang.Byte((byte)($qualifier$.get() - 1))) --$qualifier$
+i == 0 -> $qualifier$.get() == $val$ $qualifier$==$val$
+i++ -> $qualifier$.set(new java.lang.Byte((byte)($qualifier$.get() + 1))) $qualifier$++
+i-- -> $qualifier$.set(new java.lang.Byte((byte)($qualifier$.get() - 1))) $qualifier$--
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.java
new file mode 100644
index 000000000000..61b88dbefceb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/after/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ ThreadLocal<Byte> i;
+
+ void foo() {
+ i.set(new Byte((byte) (i.get() + 1)));
+ i.set(new Byte((byte) (i.get() + 1)));
+ i.set(new Byte((byte) (i.get() - 1)));
+ i.set(new Byte((byte) (i.get() - 1)));
+ if (i.get() == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/before/Test.java
new file mode 100644
index 000000000000..dd3fb1bca60d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directByte/before/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ byte i;
+
+ void foo() {
+ i++;
+ ++i;
+ i--;
+ --i;
+ if (i == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.items
new file mode 100644
index 000000000000..1bffd7037cb6
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.items
@@ -0,0 +1,22 @@
+Types:
+PsiBinaryExpression:i == 0 : boolean
+PsiField:i : java.lang.ThreadLocal<java.lang.Integer>
+PsiPostfixExpression:i++ : java.lang.ThreadLocal<java.lang.Integer>
+PsiPostfixExpression:i-- : java.lang.ThreadLocal<java.lang.Integer>
+PsiPrefixExpression:++i : java.lang.ThreadLocal<java.lang.Integer>
+PsiPrefixExpression:--i : java.lang.ThreadLocal<java.lang.Integer>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Integer>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Integer>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Integer>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Integer>
+PsiReferenceExpression:i : java.lang.ThreadLocal<java.lang.Integer>
+
+Conversions:
+++i -> $qualifier$.set($qualifier$.get() + 1) ++$qualifier$
+--i -> $qualifier$.set($qualifier$.get() - 1) --$qualifier$
+i == 0 -> $qualifier$.get() == $val$ $qualifier$==$val$
+i++ -> $qualifier$.set($qualifier$.get() + 1) $qualifier$++
+i-- -> $qualifier$.set($qualifier$.get() - 1) $qualifier$--
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.java
new file mode 100644
index 000000000000..627739bc4b1c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/after/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ ThreadLocal<Integer> i;
+
+ void foo() {
+ i.set(i.get() + 1);
+ i.set(i.get() + 1);
+ i.set(i.get() - 1);
+ i.set(i.get() - 1);
+ if (i.get() == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/before/Test.java
new file mode 100644
index 000000000000..9039f28e9617
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directInt/before/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ int i;
+
+ void foo() {
+ i++;
+ ++i;
+ i--;
+ --i;
+ if (i == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.items
new file mode 100644
index 000000000000..29d4312a8580
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiField:myS : java.lang.ThreadLocal<java.lang.String>
+PsiReferenceExpression:myS : java.lang.ThreadLocal<java.lang.String>
+PsiReferenceExpression:myS : java.lang.ThreadLocal<java.lang.String>
+
+Conversions:
+myS -> $qualifier$.get() $qualifier$ myS
+
+New expression type changes:
+Fails:
+""->java.lang.ThreadLocal<java.lang.String>
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.java
new file mode 100644
index 000000000000..949869096327
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/after/Test.java
@@ -0,0 +1,9 @@
+class Test {
+ ThreadLocal<String> myS = "";
+
+ void foo() {
+ if (myS == null) {
+ System.out.println(myS.get());
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/before/Test.java
new file mode 100644
index 000000000000..8ee02790f113
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/directString/before/Test.java
@@ -0,0 +1,9 @@
+class Test {
+ String myS = "";
+
+ void foo() {
+ if (myS == null) {
+ System.out.println(myS);
+ }
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.items b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.items
new file mode 100644
index 000000000000..09a2a211ae6a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.items
@@ -0,0 +1,22 @@
+Types:
+PsiBinaryExpression:i == 0 : boolean
+PsiField:i : java.lang.ThreadLocal
+PsiPostfixExpression:i++ : java.lang.ThreadLocal
+PsiPostfixExpression:i-- : java.lang.ThreadLocal
+PsiPrefixExpression:++i : java.lang.ThreadLocal
+PsiPrefixExpression:--i : java.lang.ThreadLocal
+PsiReferenceExpression:i : java.lang.ThreadLocal
+PsiReferenceExpression:i : java.lang.ThreadLocal
+PsiReferenceExpression:i : java.lang.ThreadLocal
+PsiReferenceExpression:i : java.lang.ThreadLocal
+PsiReferenceExpression:i : java.lang.ThreadLocal
+
+Conversions:
+++i -> $qualifier$.set(new java.lang.Integer(((java.lang.Integer)$qualifier$.get()).intValue() + 1)) ++$qualifier$
+--i -> $qualifier$.set(new java.lang.Integer(((java.lang.Integer)$qualifier$.get()).intValue() - 1)) --$qualifier$
+i == 0 -> ((java.lang.Integer)$qualifier$.get()).intValue() == $val$ $qualifier$==$val$
+i++ -> $qualifier$.set(new java.lang.Integer(((java.lang.Integer)$qualifier$.get()).intValue() + 1)) $qualifier$++
+i-- -> $qualifier$.set(new java.lang.Integer(((java.lang.Integer)$qualifier$.get()).intValue() - 1)) $qualifier$--
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.java
new file mode 100644
index 000000000000..81e5fe05d6dd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/after/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ ThreadLocal i;
+
+ void foo() {
+ i.set(new Integer(((Integer) i.get()).intValue() + 1));
+ i.set(new Integer(((Integer) i.get()).intValue() + 1));
+ i.set(new Integer(((Integer) i.get()).intValue() - 1));
+ i.set(new Integer(((Integer) i.get()).intValue() - 1));
+ if (((Integer) i.get()).intValue() == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/before/Test.java b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/before/Test.java
new file mode 100644
index 000000000000..9039f28e9617
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/typeMigrationByThreadLocal/languageLevel/before/Test.java
@@ -0,0 +1,11 @@
+class Test {
+ int i;
+
+ void foo() {
+ i++;
+ ++i;
+ i--;
+ --i;
+ if (i == 0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/Test.items
new file mode 100644
index 000000000000..b39d716277ba
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.ArrayList<? extends java.lang.Integer>
+PsiReferenceExpression:p : java.util.ArrayList<? extends java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[0]->java.util.ArrayList<? extends java.lang.Integer>
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/test.java
new file mode 100644
index 000000000000..16a620ef2e6d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Integer> p) {
+ p[0] = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/before/test.java
new file mode 100644
index 000000000000..4a148c3bd6fe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentExtends/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ p[0] = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/Test.items
new file mode 100644
index 000000000000..8ee86c529545
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiArrayAccessExpression:p[0] : java.lang.Integer
+PsiParameter:p : java.util.ArrayList<? super java.lang.Integer>
+PsiReferenceExpression:p : java.util.ArrayList<? super java.lang.Integer>
+
+Conversions:
+p[0] -> $qualifier$.set($idx$, $expr$) $qualifier$[$idx$] = $expr$ p[0] = new Integer(0)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/test.java
new file mode 100644
index 000000000000..25cab7a9d34c
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Integer> p) {
+ p.set(0, new Integer(0));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/before/test.java
new file mode 100644
index 000000000000..4a148c3bd6fe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentSuper/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ p[0] = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/Test.items
new file mode 100644
index 000000000000..e2bbfc48b834
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.ArrayList<?>
+PsiReferenceExpression:p : java.util.ArrayList<?>
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[0]->java.util.ArrayList<?>
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/test.java
new file mode 100644
index 000000000000..4804293a696e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<?> p) {
+ p[0] = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/before/test.java b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/before/test.java
new file mode 100644
index 000000000000..4a148c3bd6fe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/assignmentUnbounded/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ p[0] = new Integer(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/Test.items
new file mode 100644
index 000000000000..455ebca21125
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.lang.Number
+PsiParameter:p : java.util.ArrayList<? extends java.lang.Number>
+PsiReferenceExpression:p : java.util.ArrayList<? extends java.lang.Number>
+
+Conversions:
+p.get(0) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/test.java
new file mode 100644
index 000000000000..b403162051ad
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Number> p, Number p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/before/test.java
new file mode 100644
index 000000000000..649da301cc82
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerExtends/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<Number> p, Number p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/Test.items
new file mode 100644
index 000000000000..e4f5c3fc2088
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.lang.Object
+PsiParameter:p : java.util.ArrayList<? super java.lang.Number>
+PsiParameter:p2 : java.lang.Object
+PsiReferenceExpression:p : java.util.ArrayList<? super java.lang.Number>
+PsiReferenceExpression:p2 : java.lang.Object
+
+Conversions:
+p.get(0) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/test.java
new file mode 100644
index 000000000000..2c315ea3a723
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p, Object p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/before/test.java
new file mode 100644
index 000000000000..649da301cc82
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerSuper/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<Number> p, Number p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/Test.items
new file mode 100644
index 000000000000..a0b14b30985e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/Test.items
@@ -0,0 +1,12 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.lang.Object
+PsiParameter:p : java.util.ArrayList<?>
+PsiParameter:p2 : java.lang.Object
+PsiReferenceExpression:p : java.util.ArrayList<?>
+PsiReferenceExpression:p2 : java.lang.Object
+
+Conversions:
+p.get(0) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/test.java
new file mode 100644
index 000000000000..f10b5e2ae860
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<?> p, Object p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/before/test.java b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/before/test.java
new file mode 100644
index 000000000000..649da301cc82
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/consumerUnbounded/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<Number> p, Number p2) {
+ p2 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/Test.items
new file mode 100644
index 000000000000..1ac8dc86d9ca
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.lang.Number
+PsiParameter:p : java.lang.Integer[]
+PsiReferenceExpression:p : 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/wildcard/getAssignmentExtendsToChildType/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/test.java
new file mode 100644
index 000000000000..bfe5eb68baba
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ Number n = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/before/test.java
new file mode 100644
index 000000000000..bbddcc1a4d79
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToChildType/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Number> p) {
+ Number n = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/Test.items
new file mode 100644
index 000000000000..a4ea13d41b29
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.lang.Object[]
+PsiReferenceExpression:p : java.lang.Object[]
+
+Conversions:
+
+New expression type changes:
+Fails:
+p->java.lang.Object[]
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/test.java
new file mode 100644
index 000000000000..96208756fe87
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Object[] p) {
+ Number n = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/before/test.java
new file mode 100644
index 000000000000..bbddcc1a4d79
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToSuperType/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Number> p) {
+ Number n = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/Test.items
new file mode 100644
index 000000000000..a0fd8df506c4
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.get(0) : java.lang.Number
+PsiParameter:p : java.lang.Number[]
+PsiReferenceExpression:p : java.lang.Number[]
+
+Conversions:
+p.get(0) -> $qualifier$[$i$] $qualifier$.get($i$) p.get(0)
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/test.java
new file mode 100644
index 000000000000..33a962b96171
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Number[] p) {
+ Number n = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/before/test.java
new file mode 100644
index 000000000000..bbddcc1a4d79
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getAssignmentExtendsToType/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Number> p) {
+ Number n = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getExtends/after/Test.items
new file mode 100644
index 000000000000..d68b720f5d5b
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getExtends/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiArrayAccessExpression:p[0] : java.lang.Integer
+PsiParameter:p : java.util.ArrayList<? extends java.lang.Integer>
+PsiReferenceExpression:p : java.util.ArrayList<? extends java.lang.Integer>
+
+Conversions:
+p[0] -> $qualifier$.get($idx$) $qualifier$[$idx$]
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/getExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getExtends/after/test.java
new file mode 100644
index 000000000000..529d4942a2ce
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getExtends/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Integer> p) {
+ Integer p1 = p.get(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getExtends/before/test.java
new file mode 100644
index 000000000000..685d78f23f3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getExtends/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ Integer p1 = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getSuper/after/Test.items
new file mode 100644
index 000000000000..5300a386dc23
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getSuper/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.ArrayList<? super java.lang.Integer>
+PsiReferenceExpression:p : java.util.ArrayList<? super java.lang.Integer>
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[0]->java.util.ArrayList<? super java.lang.Integer>
diff --git a/java/typeMigration/testData/refactoring/wildcard/getSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getSuper/after/test.java
new file mode 100644
index 000000000000..eebb4c1f2dbb
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getSuper/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Integer> p) {
+ Integer p1 = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getSuper/before/test.java
new file mode 100644
index 000000000000..685d78f23f3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getSuper/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ Integer p1 = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/Test.items
new file mode 100644
index 000000000000..e2bbfc48b834
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:p : java.util.ArrayList<?>
+PsiReferenceExpression:p : java.util.ArrayList<?>
+
+Conversions:
+
+New expression type changes:
+Fails:
+p[0]->java.util.ArrayList<?>
diff --git a/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/test.java b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/test.java
new file mode 100644
index 000000000000..9ab43aa01dbe
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<?> p) {
+ Integer p1 = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/getUnbounded/before/test.java b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/before/test.java
new file mode 100644
index 000000000000..685d78f23f3d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/getUnbounded/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ Integer p1 = p[0];
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/Test.items
new file mode 100644
index 000000000000..bf63b11ab5b2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiParameter:p : java.util.ArrayList<?>
+PsiReferenceExpression:p : java.util.ArrayList<?>
+PsiReferenceExpression:p.length : int
+
+Conversions:
+p.length -> $qualifier$.size() $qualifier$.length
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/test.java b/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/test.java
new file mode 100644
index 000000000000..4f0770adbfb5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/lengthSize/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<?> p) {
+ System.out.println(p.size());
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/lengthSize/before/test.java b/java/typeMigration/testData/refactoring/wildcard/lengthSize/before/test.java
new file mode 100644
index 000000000000..e8758383dd0a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/lengthSize/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Integer[] p) {
+ System.out.println(p.length);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/Test.items
new file mode 100644
index 000000000000..fe9d55b37cda
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.add(new Integer(8)) : boolean
+PsiParameter:p : java.util.Set<? super java.lang.Integer>
+PsiReferenceExpression:p : java.util.Set<? super java.lang.Integer>
+
+Conversions:
+p.add(new Integer(8)) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/test.java
new file mode 100644
index 000000000000..25825f1f78c0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Set<? super Integer> p) {
+ p.add(new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/before/test.java
new file mode 100644
index 000000000000..d8cf544f6fde
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerCollectionChanged/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p) {
+ p.add(new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/Test.items
new file mode 100644
index 000000000000..8b996f4d00e1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:p.set(0, new Integer(8)) : java.lang.Number
+PsiParameter:p : java.util.ArrayList<? extends java.lang.Number>
+PsiReferenceExpression:p : java.util.ArrayList<? extends java.lang.Number>
+
+Conversions:
+p.set(0, new Integer(8)) -> $
+
+New expression type changes:
+Fails:
+new Integer(8)->? extends java.lang.Number
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/test.java
new file mode 100644
index 000000000000..f8f4f761d73a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtends/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? extends Number> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtends/before/test.java
new file mode 100644
index 000000000000..b5e9a24ad373
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtends/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/Test.items
new file mode 100644
index 000000000000..88976428ea99
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:p.add(new Integer(8)) : boolean
+PsiParameter:p : java.util.Set<? extends java.lang.Object>
+PsiReferenceExpression:p : java.util.Set<? extends java.lang.Object>
+
+Conversions:
+p.add(new Integer(8)) -> $
+
+New expression type changes:
+Fails:
+new Integer(8)->? extends java.lang.Object
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/test.java
new file mode 100644
index 000000000000..0c24d5791d14
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(Set<? extends Object> p) {
+ p.add(new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/before/test.java
new file mode 100644
index 000000000000..d8cf544f6fde
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsCollectionChanged/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p) {
+ p.add(new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/Test.items
new file mode 100644
index 000000000000..f2f5bb75a60f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:p1.add(p2) : boolean
+PsiParameter:p1 : java.util.List<? extends java.lang.Number>
+PsiReferenceExpression:p1 : java.util.List<? extends java.lang.Number>
+
+Conversions:
+p1.add(p2) -> $
+
+New expression type changes:
+Fails:
+p2->? extends java.lang.Number
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/test.java
new file mode 100644
index 000000000000..5d4d6fda25a2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<? extends Number> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/before/test.java
new file mode 100644
index 000000000000..a2e2cb2ae329
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerExtendsFailToStopAtWildcard/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<Number> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/Test.items
new file mode 100644
index 000000000000..9d9b2e2a447f
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:p1.add(p2) : boolean
+PsiParameter:p1 : java.util.List<? super java.lang.Integer>
+PsiReferenceExpression:p1 : java.util.List<? super java.lang.Integer>
+
+Conversions:
+p1.add(p2) -> $
+
+New expression type changes:
+Fails:
+p2->? super java.lang.Integer
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/test.java
new file mode 100644
index 000000000000..bbc30114137e
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<? super Integer> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/before/test.java
new file mode 100644
index 000000000000..a2e2cb2ae329
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerFailToStopAtWildcard/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<Number> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/Test.items
new file mode 100644
index 000000000000..2f3689b42ba5
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p1.add(p2) : boolean
+PsiParameter:p1 : java.util.List<? super java.lang.Number>
+PsiReferenceExpression:p1 : java.util.List<? super java.lang.Number>
+
+Conversions:
+p1.add(p2) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/test.java
new file mode 100644
index 000000000000..353f0432f59d
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<? super Number> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/before/test.java
new file mode 100644
index 000000000000..a2e2cb2ae329
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerStopAtWildcard/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<Number> p1, Number p2){
+ p1.add(p2);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/Test.items
new file mode 100644
index 000000000000..b0c91006b9d1
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:p.set(0, new Integer(8)) : java.lang.Object
+PsiParameter:p : java.util.ArrayList<? super java.lang.Integer>
+PsiReferenceExpression:p : java.util.ArrayList<? super java.lang.Integer>
+
+Conversions:
+p.set(0, new Integer(8)) -> $
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/test.java
new file mode 100644
index 000000000000..0769f09a7b7a
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerSuper/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Integer> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerSuper/before/test.java
new file mode 100644
index 000000000000..b5e9a24ad373
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerSuper/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/Test.items
new file mode 100644
index 000000000000..e2b8ee35fcd2
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/Test.items
@@ -0,0 +1,11 @@
+Types:
+PsiMethodCallExpression:p.set(0, new Integer(8)) : java.lang.Object
+PsiParameter:p : java.util.ArrayList<?>
+PsiReferenceExpression:p : java.util.ArrayList<?>
+
+Conversions:
+p.set(0, new Integer(8)) -> $
+
+New expression type changes:
+Fails:
+new Integer(8)->?
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/test.java b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/test.java
new file mode 100644
index 000000000000..37a2f8fcac83
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<?> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/before/test.java b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/before/test.java
new file mode 100644
index 000000000000..b5e9a24ad373
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/producerUnbounded/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ArrayList<? super Number> p) {
+ p.set(0, new Integer(8));
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/Test.items
new file mode 100644
index 000000000000..7ae170499472
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:l.substring(0) : java.lang.String
+PsiParameter:l : java.lang.ThreadLocal<? extends java.lang.String>
+PsiReferenceExpression:l : java.lang.ThreadLocal<? extends java.lang.String>
+
+Conversions:
+l.substring(0) -> $qualifier$.get() $qualifier$ l
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/test.java
new file mode 100644
index 000000000000..5275db851a70
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void method(ThreadLocal<? extends String> l) {
+ l.get().substring(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/before/test.java
new file mode 100644
index 000000000000..8805129f7191
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerExtends/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void method(String l) {
+ l.substring(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/Test.items
new file mode 100644
index 000000000000..d05d101463c7
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:l : java.lang.ThreadLocal<? super java.lang.String>
+PsiReferenceExpression:l : java.lang.ThreadLocal<? super java.lang.String>
+
+Conversions:
+
+New expression type changes:
+Fails:
+l->java.lang.ThreadLocal<? super java.lang.String>
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/test.java
new file mode 100644
index 000000000000..beb0d0ebef46
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/after/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void method(ThreadLocal<? super String> l) {
+ l.substring(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/before/test.java
new file mode 100644
index 000000000000..8805129f7191
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalConsumerSuper/before/test.java
@@ -0,0 +1,5 @@
+class Test {
+ void method(String l) {
+ l.substring(0);
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/Test.items
new file mode 100644
index 000000000000..47a89e441962
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/Test.items
@@ -0,0 +1,9 @@
+Types:
+PsiParameter:l : java.lang.ThreadLocal<java.util.List<? extends java.lang.String>>
+PsiReferenceExpression:l : java.lang.ThreadLocal<java.util.List<? extends java.lang.String>>
+
+Conversions:
+
+New expression type changes:
+Fails:
+l->java.lang.ThreadLocal<java.util.List<? extends java.lang.String>>
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/test.java
new file mode 100644
index 000000000000..93724be5c0dd
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ThreadLocal<List<? extends String>> l) {
+ l.add("");
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/before/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/before/test.java
new file mode 100644
index 000000000000..8df669c77899
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerExtends/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<String> l) {
+ l.add("");
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/Test.items b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/Test.items
new file mode 100644
index 000000000000..736189db2585
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/Test.items
@@ -0,0 +1,10 @@
+Types:
+PsiMethodCallExpression:l.add("") : boolean
+PsiParameter:l : java.lang.ThreadLocal<java.util.List<? super java.lang.String>>
+PsiReferenceExpression:l : java.lang.ThreadLocal<java.util.List<? super java.lang.String>>
+
+Conversions:
+l.add("") -> $qualifier$.get() $qualifier$ l
+
+New expression type changes:
+Fails:
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/test.java
new file mode 100644
index 000000000000..fb3b568ca1b0
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/after/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(ThreadLocal<List<? super String>> l) {
+ l.get().add("");
+ }
+} \ No newline at end of file
diff --git a/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/before/test.java b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/before/test.java
new file mode 100644
index 000000000000..8df669c77899
--- /dev/null
+++ b/java/typeMigration/testData/refactoring/wildcard/threadLocalProducerSuper/before/test.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class Test {
+ void method(List<String> l) {
+ l.add("");
+ }
+} \ No newline at end of file