@@ -510,18 +510,36 @@ object Build {
510510  def  findArtifactPath (classpath : Def .Classpath , name : String ):  String  = 
511511    findArtifact(classpath, name).getAbsolutePath
512512
513+   /**  Replace package names in package definitions, for shading. 
514+    * It assumes the full package def is written on a single line. 
515+    * It does not adapt the imports accordingly. 
516+    */  
517+   def  replacePackage (lines : List [String ])(replace : PartialFunction [String , String ]):  List [String ] =  {
518+     def  recur (lines : List [String ]):  List [String ] = 
519+       lines match  {
520+         case  head ::  tail => 
521+           if  (head.startsWith(" package " 
522+             val  packageName  =  head.stripPrefix(" package " 
523+             val  newPackageName  =  replace.applyOrElse(packageName, (_ : String ) =>  packageName)
524+             s " package  $newPackageName"  ::  tail
525+           } else  head ::  recur(tail)
526+         case  _ =>  lines
527+       }
528+     recur(lines)
529+   }
530+ 
513531  /**  Insert UnsafeNulls Import after package */  
514-   def  insertUnsafeNullsImport (lines : Seq [String ]):  Seq [String ] =  {
515-     def  recur (ls : Seq [String ], foundPackage : Boolean ):  Seq [String ] =  ls match  {
516-       case  Seq (l, rest  @   _* )  => 
532+   def  insertUnsafeNullsImport (lines : List [String ]):  List [String ] =  {
533+     def  recur (ls : List [String ], foundPackage : Boolean ):  List [String ] =  ls match  {
534+       case  l  ::  rest  => 
517535        val  lt  =  l.trim()
518536        if  (foundPackage) {
519537          if  (! (lt.isEmpty ||  lt.startsWith(" package " 
520-             " import scala.language.unsafeNulls" + :
521-           else  l + :
538+             " import scala.language.unsafeNulls" : :
539+           else  l : :
522540        } else  {
523541          if  (lt.startsWith(" package " +:  recur(rest, true )
524-           else  l + :
542+           else  l : :
525543        }
526544      case  _ =>  ls
527545    }
@@ -781,7 +799,10 @@ object Build {
781799          val  sjsSources  =  (trgDir **  " *.scala" 
782800          sjsSources.foreach(f =>  {
783801            val  lines  =  IO .readLines(f)
784-             IO .writeLines(f, insertUnsafeNullsImport(lines))
802+             val  linesWithPackage  =  replacePackage(lines) {
803+               case  " org.scalajs.ir" =>  " dotty.tools.sjs.ir" 
804+             }
805+             IO .writeLines(f, insertUnsafeNullsImport(linesWithPackage))
785806          })
786807          sjsSources
787808        } (Set (scalaJSIRSourcesJar)).toSeq
0 commit comments