// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . kotlin . idea . search . ref Index Ċ Ċ import Ġcom . intellij . openapi . module . Java Module Type Ċ import Ġcom . intellij . openapi . roots . Module Root Modification Util Ċ import Ġcom . intellij . psi . Common ClassNames Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . test Framework . Psi TestUtil Ċ import Ġcom . intellij . test Framework . Skip Slow Test Loc ally Ċ Ċ @ Skip Slow Test Loc ally Ċ class ĠKotlin Compiler Reference Multi Module Test Ġ: ĠKotlin Compiler Reference TestBase () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ org . jetbrains . kotlin . idea . search . ref Index . Kotlin Compiler Reference Index Service . build Scope With References ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ` test Ġdirty Ġscope `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġsupport Ġlibrary Ġdeclaration Ġor Ġrewrite Ġit ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġm 1 Ġ= ĠPsi TestUtil . add Module ( project , ĠJava Module Type . getModule Type (), Ġ" m 1 ", Ġmy Fixture . temp Dir Fixture . find OrCreate Dir (" m 1 ")) ĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġmy Fixture . add File To Project (" m 1 / f 1 . java ", Ġ" package Ġone ;\ n class ĠJava Class Ġ{} ") ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġmy Fixture . add File To Project (" m 1 / f 2 . kt ", Ġ" package Ġone \ n class ĠKotlin Class ") ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġmy Fixture . add File To Project (" m 1 / f 3 . txt ", Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġf 8 Ġ= Ġmy Fixture . add File To Project (" m 1 / f 8 . kt ", Ġ" package Ġone \ n class ĠAnother Kotlin Class ") ĊĊĠĠĠĠĠĠĠ ĠPsi TestUtil . add Module ( project , ĠJava Module Type . getModule Type (), Ġ" m 2 ", Ġmy Fixture . temp Dir Fixture . find OrCreate Dir (" m 2 ")) ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġmy Fixture . add File To Project (" m 2 / f 4 . txt ", Ġ"") ĊĊĠĠĠĠĠĠĠ ĠPsi TestUtil . add Module ( project , ĠJava Module Type . getModule Type (), Ġ" m 3 ", Ġmy Fixture . temp Dir Fixture . find OrCreate Dir (" m 3 ")) ĊĠĠĠĠĠĠĠ Ġval Ġf 5 Ġ= Ġmy Fixture . add File To Project (" m 3 / f 5 . java ", Ġ" package Ġthree ;\ n class ĠJava Class Ġ{} ") ĊĠĠĠĠĠĠĠ Ġval Ġf 6 Ġ= Ġmy Fixture . add File To Project (" m 3 / f 6 . kt ", Ġ" package Ġthree \ n class ĠKotlin Class ") ĊĠĠĠĠĠĠĠ Ġval Ġf 7 Ġ= Ġmy Fixture . add File To Project (" m 3 / f 7 . txt ", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġm 4 Ġ= ĠPsi TestUtil . add Module ( project , ĠJava Module Type . getModule Type (), Ġ" m 4 ", Ġmy Fixture . temp Dir Fixture . find OrCreate Dir (" m 4 ")) ĊĠĠĠĠĠĠĠ Ġval Ġf 9 Ġ= Ġmy Fixture . add File To Project (" m 4 / f 9 . kt ", Ġ" package Ġfour \ n class ĠKotlin Class ") ĊĠĠĠĠĠĠĠ ĠModule Root Modification Util . add Dependency ( m 4 , Ġm 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĠlistOf ( f 1 , Ġf 2 , Ġf 3 , Ġf 8 , Ġf 4 , Ġf 5 , Ġf 6 , Ġf 7 , Ġf 9 ) ĊĠĠĠĠĠĠĠ Ġinstall Compiler () ĊĠĠĠĠĠĠĠ Ġrebuild Project () ĊĊĠĠĠĠĠĠĠ Ġfun Ġfull Compiled Project Check () Ġ= Ġfiles . assert Files In Scope Ġ{ Ġit . name . endsWith (". kt ") Ġ} ĊĠĠĠĠĠĠĠ Ġfull Compiled Project Check () ĊĠĠĠĠĠĠĠ Ġmy Fixture . rename Element ( f 3 , Ġ" ff 3 . txt ") ĊĠĠĠĠĠĠĠ Ġfull Compiled Project Check () ĊĊĠĠĠĠĠĠĠ Ġmy Fixture . rename Element ( f 2 , Ġ" ff 2 . kt ") ĊĠĠĠĠĠĠĠ Ġfiles . assert Files In Scope Ġ{ Ġit Ġ== Ġf 6 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠList < Psi File >. assert Files In Scope ( isFile NotIn Scope : Ġ( Psi File ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġpartition ( isFile NotIn Scope ). let Ġ{ Ġ( kt Files , Ġother Files ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Scope Ġ= ĠKotlin Compiler Reference Index Service [ project ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scope With Code References ( my Fixture . find Class ( Common ClassNames . JAVA _ UTIL _ ARRAY _ LIST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" scope Ġnot Ġfound ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( kt File Ġin Ġkt Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( kt File . name , Ġkt File . virtual File Ġin Ġsearch Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( another File Ġin Ġother Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( another File . name , Ġanother File . virtual File Ġin Ġsearch Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ