File tree Expand file tree Collapse file tree 2 files changed +6
-1
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 2 files changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -1137,6 +1137,10 @@ class Definitions {
11371137 def isErasedFunctionType (tp : Type )(implicit ctx : Context ) =
11381138 isFunctionType(tp) && tp.dealias.typeSymbol.name.isErasedFunction
11391139
1140+ /** A whitelist of Scala-2 classes that are known to be pure */
1141+ def isAssuredNoInits (sym : Symbol ) =
1142+ (sym `eq` SomeClass ) || isTupleClass(sym)
1143+
11401144 // ----- primitive value class machinery ------------------------------------------
11411145
11421146 /** This class would also be obviated by the implicit function type design */
Original file line number Diff line number Diff line change @@ -596,7 +596,8 @@ object SymDenotations {
596596 * initaliazion code?
597597 */
598598 def isNoInitsClass (implicit ctx : Context ) =
599- isClass && asClass.baseClasses.forall(_.is(NoInits ))
599+ isClass &&
600+ (asClass.baseClasses.forall(_.is(NoInits )) || defn.isAssuredNoInits(symbol))
600601
601602 /** Is this a "real" method? A real method is a method which is:
602603 * - not an accessor
You can’t perform that action at this time.
0 commit comments