/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ġ< p > Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ< p > Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ< p > Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . open rewrite . java Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ interface ĠChange Method Target To Variable Test Ġ: ĠJava Recipe Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexplicit Static To Variable ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġdepends On Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġfoo () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġvoid Ġfoo () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġrecipe Ġ= ĠChange Method Target To Variable (" b . B Ġfoo ()", Ġ" a ", Ġ" a . A "), ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġa .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġb . B ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB . foo (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġa .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . foo (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstatic Import To Variable ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġdepends On Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġfoo () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġvoid Ġfoo () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġrecipe Ġ= ĠChange Method Target To Variable (" b . B Ġfoo ()", Ġ" a ", Ġ" a . A "), ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġa .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġstatic Ġb . B .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġa .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . foo (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Suppress (" NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Validation () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġrecipe Ġ= ĠChange Method Target To Variable ( null , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġvar Ġvalid Ġ= Ġrecipe . validate () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . isValid ). isFalse () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()). has Size ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 0 ]. property ). isEqualTo (" method Pattern ") ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 1 ]. property ). isEqualTo (" variable Name ") ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 2 ]. property ). isEqualTo (" variable Type ") ĊĊĠĠĠĠĠĠĠ Ġrecipe Ġ= ĠChange Method Target To Variable ( null , Ġnull ," a . A ") ĊĠĠĠĠĠĠĠ Ġvalid Ġ= Ġrecipe . validate () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . isValid ). isFalse () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 0 ]. property ). isEqualTo (" method Pattern ") ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 1 ]. property ). isEqualTo (" variable Name ") ĊĊĠĠĠĠĠĠĠ Ġrecipe Ġ= ĠChange Method Target To Variable ( null , Ġ" a ", null ) ĊĠĠĠĠĠĠĠ Ġvalid Ġ= Ġrecipe . validate () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . isValid ). isFalse () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 0 ]. property ). isEqualTo (" method Pattern ") ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 1 ]. property ). isEqualTo (" variable Type ") ĊĊĠĠĠĠĠĠĠ Ġrecipe Ġ= ĠChange Method Target To Variable (" b . B Ġfoo ()", Ġnull , null ) ĊĠĠĠĠĠĠĠ Ġvalid Ġ= Ġrecipe . validate () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . isValid ). isFalse () ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 0 ]. property ). isEqualTo (" variable Name ") ĊĠĠĠĠĠĠĠ ĠassertThat ( valid . failures ()[ 1 ]. property ). isEqualTo (" variable Type ") ĊĠĠĠ Ġ} Ċ } Ċ