/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . refactor ing . move Ċ Ċ import Ġorg . junit . Ignore Ċ import Ġorg . rust . Mock Edition Ċ import Ġorg . rust . cargo . project . workspace . Cargo Workspace Ċ Ċ @ Ignore Ċ @ Mock Edition ( Cargo Workspace . Edition . ED ITION _ 2 0 1 8 ) Ċ class ĠRs Move File Re export Test Ġ: ĠRs Move File TestBase () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdata Path Ġ= Ġ" org / rust / ide / refactor ing / move / fixtures /" ĊĊĠĠĠ Ġfun Ġ` test Ġgrand parent Ġmodule Ġunder Ġre export `() Ġ= Ġdo Test (" inner 1 / inner 2 / inner 3 / mod 1 / foo . rs ", Ġ" inner 1 / inner 2 / inner 3 / mod 2 ") ĊĊĠĠĠ Ġ// Ġparent Ġmod Ġof Ġmoved Ġfile Ġcontains Ġanother Ġmod , Ġwhich Ġhas Ġfunction Ġmod 1 _ func ĊĠĠĠ Ġ// Ġparent Ġmod Ġre export Ġthat Ġfunction ĊĠĠĠ Ġ// Ġmoved Ġfile Ġcan 't Ġdirectly Ġaccess Ġmod 1 _ func Ġafter Ġmove ĊĠĠĠ Ġ// Ġbut Ġcan Ġthrough Ġre export ĊĠĠĠ Ġfun Ġ` test Ġoutside Ġreference Ġto Ġre exported Ġitem `() Ġ= Ġdo Test ( ĊĠĠĠĠĠĠĠ Ġ" mod 1 / foo . rs ", ĊĠĠĠĠĠĠĠ Ġ" mod 2 ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; ĊĠĠĠ Ġ// - Ġmod 1 / mod . rs ĊĠĠĠĠĠĠĠ Ġmod Ġmod 1 _ inner Ġ{ Ġ Ġ// Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġfn Ġmod 1 _ func () Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 1 _ inner :: mod 1 _ func ; ĊĊĠĠĠĠĠĠĠ Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġmod 2 / mod . rs ĊĠĠĠ Ġ// - Ġmod 1 / foo . rs ĊĠĠĠĠĠĠĠ Ġfn Ġfunc () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper :: mod 1 _ func (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ"" ", Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; ĊĠĠĠ Ġ// - Ġmod 1 / mod . rs ĊĠĠĠĠĠĠĠ Ġmod Ġmod 1 _ inner Ġ{ Ġ Ġ// Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġfn Ġmod 1 _ func () Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 1 _ inner :: mod 1 _ func ; ĊĠĠĠ Ġ// - Ġmod 2 / mod . rs ĊĠĠĠĠĠĠĠ Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġmod 2 / foo . rs ĊĠĠĠĠĠĠĠ Ġfn Ġfunc () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: mod 1 :: mod 1 _ func (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ"" ") ĊĊĠĠĠ Ġ// Ġmoved Ġfile Ġhas Ġfunction Ġ` func `, ĊĠĠĠ Ġ// Ġwhich Ġcan 't Ġbe Ġdirectly Ġaccessed Ġfrom Ġ' us ages ' Ġmod ĊĠĠĠ Ġ// Ġbut Ġcan Ġthrough Ġre exports ĊĠĠĠ Ġfun Ġ` test Ġmoved Ġfile Ġunder Ġre export Ġbefore Ġmove `() Ġ= Ġdo Test ( ĊĠĠĠĠĠĠĠ Ġ" inner / mod 1 / foo . rs ", ĊĠĠĠĠĠĠĠ Ġ" inner / mod 2 ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 1 ::*; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner / mod 1 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner / mod 2 / mod . rs ĊĠĠĠ Ġ// - Ġinner / mod 1 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ", Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 1 ::*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 2 :: foo ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner / mod 1 / mod . rs ĊĠĠĠ Ġ// - Ġinner / mod 2 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner / mod 2 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ") ĊĊĠĠĠ Ġfun Ġ` test Ġmoved Ġfile Ġunder Ġre export Ġafter Ġmove `() Ġ= Ġdo Test ( ĊĠĠĠĠĠĠĠ Ġ" inner / mod 1 / foo . rs ", ĊĠĠĠĠĠĠĠ Ġ" inner / mod 2 ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; Ġ Ġ// Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 2 ::*; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner :: mod 1 :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner / mod 1 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner / mod 2 / mod . rs ĊĠĠĠ Ġ// - Ġinner / mod 1 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ", Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġmod 2 ; Ġ Ġ// Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġmod 2 ::*; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner / mod 1 / mod . rs ĊĠĠĠ Ġ// - Ġinner / mod 2 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner / mod 2 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ") ĊĊĠĠĠ Ġfun Ġ` test Ġboth Ġparent Ġmodules Ġunder Ġre export `() Ġ= Ġdo Test ( ĊĠĠĠĠĠĠĠ Ġ" inner 1 / inner 2 / mod 1 / foo . rs ", ĊĠĠĠĠĠĠĠ Ġ" inner 1 / inner 2 / mod 2 ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner 1 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġinner 2 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġinner 2 ::*; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner 1 :: mod 1 :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 1 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 2 / mod . rs ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 1 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ", Ġ""" ĊĠĠĠ Ġ// - Ġmain . rs ĊĠĠĠĠĠĠĠ Ġmod Ġinner 1 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġinner 2 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġmod Ġmod 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Ġuse Ġinner 2 ::*; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmod Ġusage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfn Ġtest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrate :: inner 1 :: mod 2 :: foo :: func (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 1 / mod . rs ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 2 / mod . rs ĊĠĠĠĠĠĠĠ Ġpub Ġmod Ġfoo ; ĊĠĠĠ Ġ// - Ġinner 1 / inner 2 / mod 2 / foo . rs ĊĠĠĠĠĠĠĠ Ġpub Ġfn Ġfunc () Ġ{} ĊĠĠĠ Ġ"" ") Ċ } Ċ