@@ -8,8 +8,7 @@ package reflect
8
8
package internal
9
9
10
10
import scala .language .postfixOps
11
-
12
- import scala .annotation .meta
11
+ import scala .annotation .{meta , migration }
13
12
import scala .collection .mutable
14
13
import Flags ._
15
14
import scala .reflect .api .{Universe => ApiUniverse }
@@ -349,12 +348,15 @@ trait Definitions extends api.StandardDefinitions {
349
348
lazy val UnqualifiedOwners = UnqualifiedModules .toSet ++ UnqualifiedModules .map(_.moduleClass)
350
349
351
350
lazy val PredefModule = requiredModule[scala.Predef .type ]
352
- def Predef_wrapArray (tp : Type ) = getMemberMethod(PredefModule , wrapArrayMethodName(tp))
353
351
def Predef_??? = getMemberMethod(PredefModule , nme.??? )
354
352
def isPredefMemberNamed (sym : Symbol , name : Name ) = (
355
353
(sym.name == name) && (sym.owner == PredefModule .moduleClass)
356
354
)
357
355
356
+ // This is a not the usual lazy val to prevent it from showing up as a separate module in JavaUniverseForce.scala
357
+ def getWrapVarargsArrayModule = if (isNewCollections) ScalaRunTimeModule else PredefModule
358
+ def wrapVarargsArrayMethod (tp : Type ) = getMemberMethod(getWrapVarargsArrayModule, wrapVarargsArrayMethodName(tp))
359
+
358
360
/** Specialization.
359
361
*/
360
362
lazy val SpecializableModule = requiredModule[Specializable ]
@@ -429,20 +431,24 @@ trait Definitions extends api.StandardDefinitions {
429
431
def elementType (container : Symbol , tp : Type ): Type = elementExtract(container, tp)
430
432
431
433
// collections classes
434
+ private [this ] lazy val isNewCollections = getClassIfDefined(" scala.collection.IterableOnce" ) != NoSymbol
432
435
lazy val ConsClass = requiredClass[scala.collection.immutable.:: [_]]
433
436
lazy val IteratorClass = requiredClass[scala.collection.Iterator [_]]
434
437
lazy val IterableClass = requiredClass[scala.collection.Iterable [_]]
435
438
lazy val ListClass = requiredClass[scala.collection.immutable.List [_]]
436
- lazy val SeqClass = requiredClass[scala.collection.Seq [_]]
439
+ @ migration(" SeqClass now refers to scala.collection.immutable.Seq" , " 2.13.0" )
440
+ lazy val SeqClass = if (isNewCollections) requiredClass[scala.collection.immutable.Seq [_]] else requiredClass[scala.collection.Seq [_]]
437
441
lazy val JavaStringBuilderClass = requiredClass[java.lang.StringBuilder ]
438
442
lazy val JavaStringBufferClass = requiredClass[java.lang.StringBuffer ]
439
443
lazy val JavaCharSequenceClass = requiredClass[java.lang.CharSequence ]
440
- lazy val TraversableClass = requiredClass[scala.collection.Traversable [_]]
444
+ @ deprecated(" Use IterableClass instead of TraversableClass" , " 2.13.0" )
445
+ lazy val TraversableClass = if (isNewCollections) IterableClass else requiredClass[scala.collection.Traversable [_]]
441
446
442
447
lazy val ListModule = requiredModule[scala.collection.immutable.List .type ]
443
448
def List_apply = getMemberMethod(ListModule , nme.apply)
444
449
lazy val NilModule = requiredModule[scala.collection.immutable.Nil .type ]
445
- lazy val SeqModule = requiredModule[scala.collection.Seq .type ]
450
+ @ migration(" SeqModule now refers to scala.collection.immutable.Seq" , " 2.13.0" )
451
+ lazy val SeqModule = if (isNewCollections) requiredModule[scala.collection.immutable.Seq .type ] else requiredModule[scala.collection.Seq .type ]
446
452
447
453
// arrays and their members
448
454
lazy val ArrayModule = requiredModule[scala.Array .type ]
@@ -588,7 +594,7 @@ trait Definitions extends api.StandardDefinitions {
588
594
def functionType (formals : List [Type ], restpe : Type ) = FunctionClass .specificType(formals, restpe)
589
595
def abstractFunctionType (formals : List [Type ], restpe : Type ) = AbstractFunctionClass .specificType(formals, restpe)
590
596
591
- def wrapArrayMethodName (elemtp : Type ): TermName = elemtp.typeSymbol match {
597
+ def wrapVarargsArrayMethodName (elemtp : Type ): TermName = elemtp.typeSymbol match {
592
598
case ByteClass => nme.wrapByteArray
593
599
case ShortClass => nme.wrapShortArray
594
600
case CharClass => nme.wrapCharArray
@@ -1494,7 +1500,6 @@ trait Definitions extends api.StandardDefinitions {
1494
1500
orElse getMemberMethod(PredefModule , TermName (" conforms" ))) // TODO: predicate on -Xsource:2.10 (for now, needed for transition from M8 -> RC1)
1495
1501
lazy val Predef_classOf = getMemberMethod(PredefModule , nme.classOf )
1496
1502
lazy val Predef_implicitly = getMemberMethod(PredefModule , nme.implicitly)
1497
- lazy val Predef_wrapRefArray = getMemberMethod(PredefModule , nme.wrapRefArray)
1498
1503
lazy val Predef_??? = DefinitionsClass .this .Predef_???
1499
1504
1500
1505
lazy val arrayApplyMethod = getMemberMethod(ScalaRunTimeModule , nme.array_apply)
@@ -1504,6 +1509,7 @@ trait Definitions extends api.StandardDefinitions {
1504
1509
lazy val ensureAccessibleMethod = getMemberMethod(ScalaRunTimeModule , nme.ensureAccessible)
1505
1510
lazy val arrayClassMethod = getMemberMethod(ScalaRunTimeModule , nme.arrayClass)
1506
1511
lazy val traversableDropMethod = getMemberMethod(ScalaRunTimeModule , nme.drop)
1512
+ lazy val wrapVarargsRefArrayMethod = getMemberMethod(getWrapVarargsArrayModule, nme.wrapRefArray)
1507
1513
1508
1514
lazy val GroupOfSpecializable = getMemberClass(SpecializableModule , tpnme.Group )
1509
1515
0 commit comments