@@ -616,18 +616,36 @@ object Build {
616
616
def findArtifactPath (classpath : Def .Classpath , name : String ): String =
617
617
findArtifact(classpath, name).getAbsolutePath
618
618
619
+ /** Replace package names in package definitions, for shading.
620
+ * It assumes the full package def is written on a single line.
621
+ * It does not adapt the imports accordingly.
622
+ */
623
+ def replacePackage (lines : List [String ])(replace : PartialFunction [String , String ]): List [String ] = {
624
+ def recur (lines : List [String ]): List [String ] =
625
+ lines match {
626
+ case head :: tail =>
627
+ if (head.startsWith(" package " )) {
628
+ val packageName = head.stripPrefix(" package " ).trim
629
+ val newPackageName = replace.applyOrElse(packageName, (_ : String ) => packageName)
630
+ s " package $newPackageName" :: tail
631
+ } else head :: recur(tail)
632
+ case _ => lines
633
+ }
634
+ recur(lines)
635
+ }
636
+
619
637
/** Insert UnsafeNulls Import after package */
620
- def insertUnsafeNullsImport (lines : Seq [String ]): Seq [String ] = {
621
- def recur (ls : Seq [String ], foundPackage : Boolean ): Seq [String ] = ls match {
622
- case Seq (l, rest @ _* ) =>
638
+ def insertUnsafeNullsImport (lines : List [String ]): List [String ] = {
639
+ def recur (ls : List [String ], foundPackage : Boolean ): List [String ] = ls match {
640
+ case l :: rest =>
623
641
val lt = l.trim()
624
642
if (foundPackage) {
625
643
if (! (lt.isEmpty || lt.startsWith(" package " )))
626
- " import scala.language.unsafeNulls" + : ls
627
- else l + : recur(rest, foundPackage)
644
+ " import scala.language.unsafeNulls" : : ls
645
+ else l : : recur(rest, foundPackage)
628
646
} else {
629
647
if (lt.startsWith(" package " )) l +: recur(rest, true )
630
- else l + : recur(rest, foundPackage)
648
+ else l : : recur(rest, foundPackage)
631
649
}
632
650
case _ => ls
633
651
}
@@ -928,7 +946,10 @@ object Build {
928
946
val sjsSources = (trgDir ** " *.scala" ).get.toSet
929
947
sjsSources.foreach(f => {
930
948
val lines = IO .readLines(f)
931
- IO .writeLines(f, insertUnsafeNullsImport(lines))
949
+ val linesWithPackage = replacePackage(lines) {
950
+ case " org.scalajs.ir" => " dotty.tools.sjs.ir"
951
+ }
952
+ IO .writeLines(f, insertUnsafeNullsImport(linesWithPackage))
932
953
})
933
954
sjsSources
934
955
} (Set (scalaJSIRSourcesJar)).toSeq
0 commit comments