Skip to content

Commit 80eb242

Browse files
committed
Merge pull request #988 from smarter/fix/compile-Seq
Reduce the amount of typing in Namer, fixes compiling Seq
2 parents 47da632 + 66ae931 commit 80eb242

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ object desugar {
584584
* tree @cls
585585
*/
586586
def makeAnnotated(cls: Symbol, tree: Tree)(implicit ctx: Context) =
587-
Annotated(TypedSplice(tpd.New(cls.typeRef, Nil)), tree)
587+
Annotated(untpd.New(untpd.TypeTree(cls.typeRef), Nil), tree)
588588

589589
private def derivedValDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers) =
590590
ValDef(named.name.asTermName, tpt, rhs).withMods(mods).withPos(named.pos)

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ class Definitions {
5656
private def newSyntheticTypeParam(cls: ClassSymbol, scope: MutableScope, paramFlags: FlagSet, suffix: String = "T0") =
5757
newTypeParam(cls, suffix.toTypeName.expandedName(cls), ExpandedName | paramFlags, scope)
5858

59-
private def specialPolyClass(name: TypeName, paramFlags: FlagSet, parentConstrs: Type*): ClassSymbol = {
59+
// NOTE: Ideally we would write `parentConstrs: => Type*` but SIP-24 is only
60+
// implemented in Dotty and not in Scala 2.
61+
// See <http://docs.scala-lang.org/sips/pending/repeated-byname.html>.
62+
private def specialPolyClass(name: TypeName, paramFlags: FlagSet, parentConstrs: => Seq[Type]): ClassSymbol = {
6063
val completer = new LazyType {
6164
def complete(denot: SymDenotation)(implicit ctx: Context): Unit = {
6265
val cls = denot.asClass.classSymbol
@@ -353,10 +356,10 @@ class Definitions {
353356
lazy val BoxedDoubleModule = ctx.requiredModule("java.lang.Double")
354357
lazy val BoxedUnitModule = ctx.requiredModule("java.lang.Void")
355358

356-
lazy val ByNameParamClass2x = specialPolyClass(tpnme.BYNAME_PARAM_CLASS, Covariant, AnyType)
357-
lazy val EqualsPatternClass = specialPolyClass(tpnme.EQUALS_PATTERN, EmptyFlags, AnyType)
359+
lazy val ByNameParamClass2x = specialPolyClass(tpnme.BYNAME_PARAM_CLASS, Covariant, Seq(AnyType))
360+
lazy val EqualsPatternClass = specialPolyClass(tpnme.EQUALS_PATTERN, EmptyFlags, Seq(AnyType))
358361

359-
lazy val RepeatedParamClass = specialPolyClass(tpnme.REPEATED_PARAM_CLASS, Covariant, ObjectType, SeqType)
362+
lazy val RepeatedParamClass = specialPolyClass(tpnme.REPEATED_PARAM_CLASS, Covariant, Seq(ObjectType, SeqType))
360363

361364
// fundamental classes
362365
lazy val StringClass = ctx.requiredClass("java.lang.String")

src/dotty/tools/dotc/core/TypeErasure.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,11 @@ object TypeErasure {
126126
erasureFn(isJava = false, semiEraseVCs = true, isConstructor = false, wildcardOK = false)(tp)(erasureCtx)
127127

128128
def sigName(tp: Type, isJava: Boolean)(implicit ctx: Context): TypeName = {
129-
val seqClass = if (isJava) defn.ArrayClass else defn.SeqClass
130129
val normTp =
131-
if (tp.isRepeatedParam) tp.translateParameterized(defn.RepeatedParamClass, seqClass)
130+
if (tp.isRepeatedParam) {
131+
val seqClass = if (isJava) defn.ArrayClass else defn.SeqClass
132+
tp.translateParameterized(defn.RepeatedParamClass, seqClass)
133+
}
132134
else tp
133135
val erase = erasureFn(isJava, semiEraseVCs = false, isConstructor = false, wildcardOK = true)
134136
erase.sigName(normTp)(erasureCtx)

test/dotc/scala-collections.whitelist

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,7 @@
163163
./scala-scala/src/library/scala/collection/Searching.scala
164164

165165

166-
# cyclic reference involving trait Seq
167-
#./scala-scala/src/library/scala/collection/Seq.scala
166+
./scala-scala/src/library/scala/collection/Seq.scala
168167

169168
./scala-scala/src/library/scala/collection/SeqExtractors.scala
170169

0 commit comments

Comments
 (0)