Skip to content

Commit ea8a798

Browse files
committed
Try using the val alias
1 parent 97db2a9 commit ea8a798

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,8 +405,21 @@ class Definitions {
405405
// We load SeqType from the alias in scala package object
406406
// - in 2.12: scala.collection.Seq
407407
// - in 2.13: scala.collection.immutable.Seq
408-
val alias = ctx.base.staticRef("scala.Seq".toTypeName).requiredSymbol(_.isAliasType)
409-
alias.info.classSymbol.typeRef
408+
409+
// force to avoid cycles
410+
// ctx.requiredClassRef("scala.collection.Seq").symbol.ensureCompleted()
411+
// ctx.requiredClassRef("scala.collection.immutable.Seq").symbol.ensureCompleted()
412+
413+
// // Using type Seq[+A] = ...
414+
// val alias = ctx.base.staticRef("scala.Seq".toTypeName).requiredSymbol(_.isAliasType)
415+
// alias.info.classSymbol.typeRef
416+
417+
// Using val Seq = ...
418+
val scalaSeq = ctx.base.staticRef("scala.Seq".toTermName)
419+
val seqName = scalaSeq.info.resultType.termSymbol.fullName
420+
ctx.requiredClassRef(seqName.toTypeName)
421+
422+
// ctx.requiredClassRef("scala.collection.Seq")
410423
}
411424

412425
def SeqClass(implicit ctx: Context) = SeqType.symbol.asClass

tests/pos/seqtype-cycle/Test2.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package object scala {
22
type Throwable = java.lang.Throwable // needed for some reasons
33

4-
type Seq[+A] = scala.Seq[A]
4+
type Seq[+A] = scala.collection.Seq[A]
5+
val Seq = scala.collection.Seq
56
}

tests/pos/seqtype-cycle/Test3.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package scala
22

3-
trait Seq[@specialized(1, 2) A]
4-
53
class specialized(types: Int*) extends scala.annotation.StaticAnnotation
4+
5+
package collection {
6+
class Foo[@specialized(1, 2) A]
7+
8+
trait Seq[A] extends Foo[A]
9+
object Seq extends SeqFactory[Seq]
10+
11+
trait SeqFactory[CC[X] <: Seq[X]]
12+
}

0 commit comments

Comments
 (0)