Skip to content

Commit 18daf78

Browse files
authored
Merge pull request #40 from scala/backport-lts-3.3-21765
Backport "Shade scalajs.ir under dotty.tools" to 3.3 LTS
2 parents 3b9d709 + 62de211 commit 18daf78

File tree

13 files changed

+71
-50
lines changed

13 files changed

+71
-50
lines changed

compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import dotty.tools.dotc.transform.{Erasure, ValueClasses}
2525
import dotty.tools.dotc.util.SourcePosition
2626
import dotty.tools.dotc.report
2727

28-
import org.scalajs.ir
29-
import org.scalajs.ir.{ClassKind, Position, Names => jsNames, Trees => js, Types => jstpe}
30-
import org.scalajs.ir.Names.{ClassName, MethodName, SimpleMethodName}
31-
import org.scalajs.ir.OriginalName
32-
import org.scalajs.ir.OriginalName.NoOriginalName
33-
import org.scalajs.ir.Trees.OptimizerHints
28+
import dotty.tools.sjs.ir
29+
import dotty.tools.sjs.ir.{ClassKind, Position, Names => jsNames, Trees => js, Types => jstpe}
30+
import dotty.tools.sjs.ir.Names.{ClassName, MethodName, SimpleMethodName}
31+
import dotty.tools.sjs.ir.OriginalName
32+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
33+
import dotty.tools.sjs.ir.Trees.OptimizerHints
3434

3535
import dotty.tools.dotc.transform.sjs.JSSymUtils.*
3636

compiler/src/dotty/tools/backend/sjs/JSEncoding.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ import StdNames.*
1515

1616
import dotty.tools.dotc.transform.sjs.JSSymUtils.*
1717

18-
import org.scalajs.ir
19-
import org.scalajs.ir.{Trees => js, Types => jstpe}
20-
import org.scalajs.ir.Names.{LocalName, LabelName, FieldName, SimpleMethodName, MethodName, ClassName}
21-
import org.scalajs.ir.OriginalName
22-
import org.scalajs.ir.OriginalName.NoOriginalName
23-
import org.scalajs.ir.UTF8String
18+
import dotty.tools.sjs.ir
19+
import dotty.tools.sjs.ir.{Trees => js, Types => jstpe}
20+
import dotty.tools.sjs.ir.Names.{LocalName, LabelName, FieldName, SimpleMethodName, MethodName, ClassName}
21+
import dotty.tools.sjs.ir.OriginalName
22+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
23+
import dotty.tools.sjs.ir.UTF8String
2424

2525
import dotty.tools.backend.jvm.DottyBackendInterface.symExtensions
2626

compiler/src/dotty/tools/backend/sjs/JSExportsGen.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import TypeErasure.ErasedValueType
2222
import dotty.tools.dotc.util.{SourcePosition, SrcPos}
2323
import dotty.tools.dotc.report
2424

25-
import org.scalajs.ir.{Position, Names => jsNames, Trees => js, Types => jstpe}
26-
import org.scalajs.ir.Names.DefaultModuleID
27-
import org.scalajs.ir.OriginalName.NoOriginalName
28-
import org.scalajs.ir.Position.NoPosition
29-
import org.scalajs.ir.Trees.OptimizerHints
25+
import dotty.tools.sjs.ir.{Position, Names => jsNames, Trees => js, Types => jstpe}
26+
import dotty.tools.sjs.ir.Names.DefaultModuleID
27+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
28+
import dotty.tools.sjs.ir.Position.NoPosition
29+
import dotty.tools.sjs.ir.Trees.OptimizerHints
3030

3131
import dotty.tools.dotc.transform.sjs.JSExportUtils.*
3232
import dotty.tools.dotc.transform.sjs.JSSymUtils.*
@@ -924,7 +924,7 @@ final class JSExportsGen(jsCodeGen: JSCodeGen)(using Context) {
924924
InstanceOfTypeTest(tpe.tycon.typeSymbol.typeRef)
925925

926926
case _ =>
927-
import org.scalajs.ir.Names
927+
import dotty.tools.sjs.ir.Names
928928

929929
(toIRType(tpe): @unchecked) match {
930930
case jstpe.AnyType => NoTypeTest

compiler/src/dotty/tools/backend/sjs/JSPositions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import dotty.tools.dotc.report
1313
import dotty.tools.dotc.util.{SourceFile, SourcePosition}
1414
import dotty.tools.dotc.util.Spans.Span
1515

16-
import org.scalajs.ir
16+
import dotty.tools.sjs.ir
1717

1818
/** Conversion utilities from dotty Positions to IR Positions. */
1919
class JSPositions()(using Context) {

compiler/src/dotty/tools/dotc/transform/CheckReentrant.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class CheckReentrant extends MiniPhase {
4343
requiredClass("scala.annotation.internal.unshared"))
4444

4545
private val scalaJSIRPackageClass = new CtxLazy(
46-
getPackageClassIfDefined("org.scalajs.ir"))
46+
getPackageClassIfDefined("dotty.tools.sjs.ir"))
4747

4848
def isIgnored(sym: Symbol)(using Context): Boolean =
4949
sym.hasAnnotation(sharableAnnot()) ||

compiler/src/dotty/tools/dotc/transform/sjs/JSSymUtils.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import Types.*
1717

1818
import dotty.tools.backend.sjs.JSDefinitions.jsdefn
1919

20-
import org.scalajs.ir.{Trees => js}
20+
import dotty.tools.sjs.ir.{Trees => js}
2121

2222
/** Additional extensions for `Symbol`s that are only relevant for Scala.js. */
2323
object JSSymUtils {

compiler/src/dotty/tools/dotc/transform/sjs/PrepJSExports.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import dotty.tools.backend.sjs.JSDefinitions.jsdefn
2121
import JSExportUtils.*
2222
import JSSymUtils.*
2323

24-
import org.scalajs.ir.Names.DefaultModuleID
25-
import org.scalajs.ir.Trees.TopLevelExportDef.isValidTopLevelExportName
24+
import dotty.tools.sjs.ir.Names.DefaultModuleID
25+
import dotty.tools.sjs.ir.Trees.TopLevelExportDef.isValidTopLevelExportName
2626

2727
object PrepJSExports {
2828
import tpd.*

compiler/src/dotty/tools/dotc/transform/sjs/PrepJSInterop.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import Types.*
2323

2424
import JSSymUtils.*
2525

26-
import org.scalajs.ir.Trees.JSGlobalRef
26+
import dotty.tools.sjs.ir.Trees.JSGlobalRef
2727

2828
import dotty.tools.backend.sjs.JSDefinitions.jsdefn
2929

project/Build.scala

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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 ").trim
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" +: ls
521-
else l +: recur(rest, foundPackage)
538+
"import scala.language.unsafeNulls" :: ls
539+
else l :: recur(rest, foundPackage)
522540
} else {
523541
if (lt.startsWith("package ")) l +: recur(rest, true)
524-
else l +: recur(rest, foundPackage)
542+
else l :: recur(rest, foundPackage)
525543
}
526544
case _ => ls
527545
}
@@ -781,7 +799,10 @@ object Build {
781799
val sjsSources = (trgDir ** "*.scala").get.toSet
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

tests/pos-with-compiler-cc/backend/sjs/JSCodeGen.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import dotty.tools.dotc.transform.SymUtils._
2525
import dotty.tools.dotc.util.SourcePosition
2626
import dotty.tools.dotc.report
2727

28-
import org.scalajs.ir
29-
import org.scalajs.ir.{ClassKind, Position, Names => jsNames, Trees => js, Types => jstpe}
30-
import org.scalajs.ir.Names.{ClassName, MethodName, SimpleMethodName}
31-
import org.scalajs.ir.OriginalName
32-
import org.scalajs.ir.OriginalName.NoOriginalName
33-
import org.scalajs.ir.Trees.OptimizerHints
28+
import dotty.tools.sjs.ir
29+
import dotty.tools.sjs.ir.{ClassKind, Position, Names => jsNames, Trees => js, Types => jstpe}
30+
import dotty.tools.sjs.ir.Names.{ClassName, MethodName, SimpleMethodName}
31+
import dotty.tools.sjs.ir.OriginalName
32+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
33+
import dotty.tools.sjs.ir.Trees.OptimizerHints
3434

3535
import dotty.tools.dotc.transform.sjs.JSSymUtils._
3636

tests/pos-with-compiler-cc/backend/sjs/JSEncoding.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ import StdNames._
1515

1616
import dotty.tools.dotc.transform.sjs.JSSymUtils._
1717

18-
import org.scalajs.ir
19-
import org.scalajs.ir.{Trees => js, Types => jstpe}
20-
import org.scalajs.ir.Names.{LocalName, LabelName, FieldName, SimpleMethodName, MethodName, ClassName}
21-
import org.scalajs.ir.OriginalName
22-
import org.scalajs.ir.OriginalName.NoOriginalName
23-
import org.scalajs.ir.UTF8String
18+
import dotty.tools.sjs.ir
19+
import dotty.tools.sjs.ir.{Trees => js, Types => jstpe}
20+
import dotty.tools.sjs.ir.Names.{LocalName, LabelName, FieldName, SimpleMethodName, MethodName, ClassName}
21+
import dotty.tools.sjs.ir.OriginalName
22+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
23+
import dotty.tools.sjs.ir.UTF8String
2424

2525
import dotty.tools.backend.jvm.DottyBackendInterface.symExtensions
2626

tests/pos-with-compiler-cc/backend/sjs/JSExportsGen.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import TypeErasure.ErasedValueType
2222
import dotty.tools.dotc.util.{SourcePosition, SrcPos}
2323
import dotty.tools.dotc.report
2424

25-
import org.scalajs.ir.{Position, Names => jsNames, Trees => js, Types => jstpe}
26-
import org.scalajs.ir.Names.DefaultModuleID
27-
import org.scalajs.ir.OriginalName.NoOriginalName
28-
import org.scalajs.ir.Position.NoPosition
29-
import org.scalajs.ir.Trees.OptimizerHints
25+
import dotty.tools.sjs.ir.{Position, Names => jsNames, Trees => js, Types => jstpe}
26+
import dotty.tools.sjs.ir.Names.DefaultModuleID
27+
import dotty.tools.sjs.ir.OriginalName.NoOriginalName
28+
import dotty.tools.sjs.ir.Position.NoPosition
29+
import dotty.tools.sjs.ir.Trees.OptimizerHints
3030

3131
import dotty.tools.dotc.transform.sjs.JSExportUtils._
3232
import dotty.tools.dotc.transform.sjs.JSSymUtils._
@@ -924,7 +924,7 @@ final class JSExportsGen(jsCodeGen: JSCodeGen)(using Context) {
924924
InstanceOfTypeTest(tpe.tycon.typeSymbol.typeRef)
925925

926926
case _ =>
927-
import org.scalajs.ir.Names
927+
import dotty.tools.sjs.ir.Names
928928

929929
(toIRType(tpe): @unchecked) match {
930930
case jstpe.AnyType => NoTypeTest

tests/pos-with-compiler-cc/backend/sjs/JSPositions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import dotty.tools.dotc.report
1313
import dotty.tools.dotc.util.{SourceFile, SourcePosition}
1414
import dotty.tools.dotc.util.Spans.Span
1515

16-
import org.scalajs.ir
16+
import dotty.tools.sjs.ir
1717

1818
/** Conversion utilities from dotty Positions to IR Positions. */
1919
class JSPositions()(using Context) {

0 commit comments

Comments
 (0)