Skip to content

Commit 0485885

Browse files
committed
Add explicit Context
1 parent b5168aa commit 0485885

File tree

6 files changed

+38
-39
lines changed

6 files changed

+38
-39
lines changed

compiler/src/dotty/tools/backend/jvm/BCodeHelpers.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ trait BCodeHelpers extends BCodeIdiomatic with BytecodeWriters {
4444
import tpd._
4545
import coreBTypes._
4646
import int._
47+
import DottyBackendInterface._
4748

4849
def ScalaATTRName: String = "Scala"
4950
def ScalaSignatureATTRName: String = "ScalaSig"

compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import dotty.tools.dotc.util.Spans._
2727
*/
2828
trait BCodeSkelBuilder extends BCodeHelpers {
2929
import int._
30-
import DottyBackendInterface.symExtensions
30+
import DottyBackendInterface.{symExtensions, _}
3131
import tpd._
3232
import bTypes._
3333
import coreBTypes._

compiler/src/dotty/tools/backend/jvm/BTypes.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ abstract class BTypes {
610610
assert(!ClassBType.isInternalPhantomType(internalName), s"Cannot create ClassBType for phantom type $this")
611611

612612
assert(
613-
if (info.superClass.isEmpty) { isJLO(this) || (int.isCompilingPrimitive && ClassBType.hasNoSuper(internalName)) }
613+
if (info.superClass.isEmpty) { isJLO(this) || (DottyBackendInterface.isCompilingPrimitive && ClassBType.hasNoSuper(internalName)) }
614614
else if (isInterface) isJLO(info.superClass.get)
615615
else !isJLO(this) && ifInit(info.superClass.get)(!_.isInterface),
616616
s"Invalid superClass in $this: ${info.superClass}"

compiler/src/dotty/tools/backend/jvm/BTypesFromSymbols.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import dotty.tools.dotc.util.WeakHashSet
2727
*/
2828
class BTypesFromSymbols[I <: DottyBackendInterface](val int: I) extends BTypes {
2929
import int._
30-
import DottyBackendInterface.symExtensions
30+
import DottyBackendInterface.{symExtensions, _}
3131

3232
lazy val TransientAttr = requiredClass[scala.transient]
3333
lazy val VolatileAttr = requiredClass[scala.volatile]

compiler/src/dotty/tools/backend/jvm/CoreBTypes.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import dotty.tools.dotc.transform.Erasure
3434
class CoreBTypes[BTFS <: BTypesFromSymbols[_ <: DottyBackendInterface]](val bTypes: BTFS) {
3535
import bTypes._
3636
import int._
37+
import DottyBackendInterface._
3738

3839
//import global._
3940
//import rootMirror.{requiredClass, getClassIfDefined}

compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,6 @@ import Names.Name
3636

3737
class DottyBackendInterface(val outputDirectory: AbstractFile, val superCallsMap: Map[Symbol, Set[ClassSymbol]])(implicit val ctx: Context) {
3838

39-
private def erasureString(clazz: Class[_]): String = {
40-
if (clazz.isArray) "Array[" + erasureString(clazz.getComponentType) + "]"
41-
else clazz.getName
42-
}
43-
44-
def requiredClass[T](implicit evidence: ClassTag[T]): Symbol =
45-
ctx.requiredClass(erasureString(evidence.runtimeClass))
46-
47-
def requiredModule[T](implicit evidence: ClassTag[T]): Symbol = {
48-
val moduleName = erasureString(evidence.runtimeClass)
49-
val className = if (moduleName.endsWith("$")) moduleName.dropRight(1) else moduleName
50-
ctx.requiredModule(className)
51-
}
52-
5339
private val desugared = new java.util.IdentityHashMap[Type, tpd.Select]
5440

5541
def desugarIdentBI(i: Ident): Option[tpd.Select] = {
@@ -103,8 +89,6 @@ class DottyBackendInterface(val outputDirectory: AbstractFile, val superCallsMap
10389
def _2: List[Tree] = field.elems
10490
}
10591

106-
107-
10892
abstract class DeconstructorCommon[T >: Null <: AnyRef] {
10993
var field: T = null
11094
def get: this.type = this
@@ -116,31 +100,23 @@ class DottyBackendInterface(val outputDirectory: AbstractFile, val superCallsMap
116100
}
117101
}
118102

103+
}
119104

105+
object DottyBackendInterface {
120106

121-
private val primitiveCompilationUnits = Set(
122-
"Unit.scala",
123-
"Boolean.scala",
124-
"Char.scala",
125-
"Byte.scala",
126-
"Short.scala",
127-
"Int.scala",
128-
"Float.scala",
129-
"Long.scala",
130-
"Double.scala"
131-
)
132-
133-
/**
134-
* True if the current compilation unit is of a primitive class (scala.Boolean et al).
135-
* Used only in assertions.
136-
*/
137-
def isCompilingPrimitive = {
138-
primitiveCompilationUnits(ctx.compilationUnit.source.file.name)
107+
private def erasureString(clazz: Class[_]): String = {
108+
if (clazz.isArray) "Array[" + erasureString(clazz.getComponentType) + "]"
109+
else clazz.getName
139110
}
140111

141-
}
112+
def requiredClass[T](implicit evidence: ClassTag[T], ctx: Context): Symbol =
113+
ctx.requiredClass(erasureString(evidence.runtimeClass))
142114

143-
object DottyBackendInterface {
115+
def requiredModule[T](implicit evidence: ClassTag[T], ctx: Context): Symbol = {
116+
val moduleName = erasureString(evidence.runtimeClass)
117+
val className = if (moduleName.endsWith("$")) moduleName.dropRight(1) else moduleName
118+
ctx.requiredModule(className)
119+
}
144120

145121
extension symExtensions on (sym: Symbol) {
146122

@@ -189,4 +165,25 @@ object DottyBackendInterface {
189165
}
190166

191167
}
168+
169+
private val primitiveCompilationUnits = Set(
170+
"Unit.scala",
171+
"Boolean.scala",
172+
"Char.scala",
173+
"Byte.scala",
174+
"Short.scala",
175+
"Int.scala",
176+
"Float.scala",
177+
"Long.scala",
178+
"Double.scala"
179+
)
180+
181+
/**
182+
* True if the current compilation unit is of a primitive class (scala.Boolean et al).
183+
* Used only in assertions.
184+
*/
185+
def isCompilingPrimitive(using ctx: Context) = {
186+
primitiveCompilationUnits(ctx.compilationUnit.source.file.name)
187+
}
188+
192189
}

0 commit comments

Comments
 (0)