Skip to content

Commit 9a07924

Browse files
committed
Disallow Any as base class
1 parent 18e1a35 commit 9a07924

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ class Definitions {
184184
arr
185185
}
186186

187-
private def completeClass(cls: ClassSymbol): ClassSymbol = {
188-
ensureConstructor(cls, EmptyScope)
187+
private def completeClass(cls: ClassSymbol, ensureCtor: Boolean = true): ClassSymbol = {
188+
if (ensureCtor) ensureConstructor(cls, EmptyScope)
189189
if (cls.linkedClass.exists) cls.linkedClass.info = NoType
190190
cls
191191
}
@@ -262,7 +262,7 @@ class Definitions {
262262
* def getClass: java.lang.Class[T] = ???
263263
* }
264264
*/
265-
lazy val AnyClass: ClassSymbol = completeClass(enterCompleteClassSymbol(ScalaPackageClass, tpnme.Any, Abstract, Nil))
265+
lazy val AnyClass: ClassSymbol = completeClass(enterCompleteClassSymbol(ScalaPackageClass, tpnme.Any, Abstract, Nil), ensureCtor = false)
266266
def AnyType: TypeRef = AnyClass.typeRef
267267
lazy val AnyValClass: ClassSymbol = completeClass(enterCompleteClassSymbol(ScalaPackageClass, tpnme.AnyVal, Abstract, List(AnyClass.typeRef)))
268268
def AnyValType: TypeRef = AnyValClass.typeRef

tests/neg/i5001.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
case class i1() extends Any // error: Any does not have a constructor

tests/pos/i5001.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
case class i1() extends Any
1+
case class i1() extends AnyRef

0 commit comments

Comments
 (0)