@@ -266,6 +266,7 @@ class Definitions {
266266 @ tu lazy  val  CompiletimeOpsDoubleModuleClass :  Symbol  =  requiredModule(" scala.compiletime.ops.double"  ).moduleClass
267267 @ tu lazy  val  CompiletimeOpsStringModuleClass :  Symbol  =  requiredModule(" scala.compiletime.ops.string"  ).moduleClass
268268 @ tu lazy  val  CompiletimeOpsBooleanModuleClass :  Symbol  =  requiredModule(" scala.compiletime.ops.boolean"  ).moduleClass
269+  @ tu lazy  val  ErasedClass :  ClassSymbol  =  requiredClass(" scala.compiletime.Erased"  )
269270
270271 /**  Note: We cannot have same named methods defined in Object and Any (and AnyVal, for that matter) 
271272 * because after erasure the Any and AnyVal references get remapped to the Object methods 
@@ -543,7 +544,7 @@ class Definitions {
543544 //  needed as a synthetic class because Scala 2.x refers to it in classfiles
544545 //  but does not define it as an explicit class.
545546 val  cls  =  enterCompleteClassSymbol(
546-  ScalaPackageClass , tpnme.Singleton , PureInterfaceCreationFlags  |  Final   |   Erased ,
547+  ScalaPackageClass , tpnme.Singleton , PureInterfaceCreationFlags  |  Final ,
547548 List (AnyType ))
548549 enterTypeField(cls, tpnme.Self , Deferred , cls.info.decls.openForMutations)
549550 cls
@@ -1004,16 +1005,18 @@ class Definitions {
10041005 @ tu lazy  val  Caps_Capability :  ClassSymbol  =  requiredClass(" scala.caps.Capability"  )
10051006 @ tu lazy  val  Caps_CapSet :  ClassSymbol  =  requiredClass(" scala.caps.CapSet"  )
10061007 @ tu lazy  val  CapsInternalModule :  Symbol  =  requiredModule(" scala.caps.internal"  )
1008+  @ tu lazy  val  Caps_erasedValue :  Symbol  =  CapsInternalModule .requiredMethod(" erasedValue"  )
10071009 @ tu lazy  val  CapsUnsafeModule :  Symbol  =  requiredModule(" scala.caps.unsafe"  )
10081010 @ tu lazy  val  Caps_unsafeAssumePure :  Symbol  =  CapsUnsafeModule .requiredMethod(" unsafeAssumePure"  )
10091011 @ tu lazy  val  Caps_unsafeAssumeSeparate :  Symbol  =  CapsUnsafeModule .requiredMethod(" unsafeAssumeSeparate"  )
1012+  @ tu lazy  val  Caps_unsafeErasedValue :  Symbol  =  CapsUnsafeModule .requiredMethod(" unsafeErasedValue"  )
10101013 @ tu lazy  val  Caps_ContainsTrait :  TypeSymbol  =  CapsModule .requiredType(" Contains"  )
10111014 @ tu lazy  val  Caps_ContainsModule :  Symbol  =  requiredModule(" scala.caps.Contains"  )
10121015 @ tu lazy  val  Caps_containsImpl :  TermSymbol  =  Caps_ContainsModule .requiredMethod(" containsImpl"  )
10131016 @ tu lazy  val  Caps_Mutable :  ClassSymbol  =  requiredClass(" scala.caps.Mutable"  )
10141017 @ tu lazy  val  Caps_SharedCapability :  ClassSymbol  =  requiredClass(" scala.caps.SharedCapability"  )
10151018
1016-  @ tu lazy  val  PureClass :  Symbol  =  requiredClass(" scala.Pure"  )
1019+  @ tu lazy  val  PureClass :  ClassSymbol  =  requiredClass(" scala.Pure"  )
10171020
10181021 //  Annotation base classes
10191022 @ tu lazy  val  AnnotationClass :  ClassSymbol  =  requiredClass(" scala.annotation.Annotation"  )
@@ -1563,6 +1566,11 @@ class Definitions {
15631566 @ tu lazy  val  pureSimpleClasses  = 
15641567 Set (StringClass , NothingClass , NullClass ) ++  ScalaValueClasses ()
15651568
1569+  @ tu lazy  val  capsErasedValueMethods  = 
1570+  Set (Caps_erasedValue , Caps_unsafeErasedValue )
1571+  @ tu lazy  val  erasedValueMethods  = 
1572+  capsErasedValueMethods +  Compiletime_erasedValue 
1573+ 
15661574 @ tu lazy  val  AbstractFunctionType :  Array [TypeRef ] =  mkArityArray(" scala.runtime.AbstractFunction"  , MaxImplementedFunctionArity , 0 ).asInstanceOf [Array [TypeRef ]]
15671575 val  AbstractFunctionClassPerRun :  PerRun [Array [Symbol ]] =  new  PerRun (AbstractFunctionType .map(_.symbol.asClass))
15681576 def  AbstractFunctionClass (n : Int )(using  Context ):  Symbol  =  AbstractFunctionClassPerRun ()(using  ctx)(n)
@@ -2006,7 +2014,9 @@ class Definitions {
20062014
20072015 /**  A allowlist of Scala-2 classes that are known to be pure */  
20082016 def  isAssuredNoInits (sym : Symbol ):  Boolean  = 
2009-  (sym `eq` SomeClass ) ||  isTupleClass(sym)
2017+  (sym `eq` SomeClass )
2018+  ||  isTupleClass(sym)
2019+  ||  sym.is(Module ) &&  isAssuredNoInits(sym.companionClass)
20102020
20112021 /**  If `cls` is Tuple1..Tuple22, add the corresponding *: type as last parent to `parents` */  
20122022 def  adjustForTuple (cls : ClassSymbol , tparams : List [TypeSymbol ], parents : List [Type ]):  List [Type ] =  {
0 commit comments