@@ -756,19 +756,18 @@ object Checking {
756756 case _ =>
757757 report.error(ValueClassesMayNotContainInitalization (clazz), stat.srcPos)
758758 }
759+ inline def checkParentIsNotAnyValAlias (): Unit =
760+ cdef.rhs match {
761+ case impl : Template =>
762+ val parent = impl.parents.head
763+ if parent.symbol.isAliasType && parent.typeOpt.dealias =:= defn.AnyValType then
764+ report.error(ValueClassCannotExtendAliasOfAnyVal (clazz, parent.symbol), cdef.srcPos)
765+ case _ => ()
766+ }
759767 // We don't check synthesised enum anonymous classes that are generated from
760768 // enum extending a value class type (AnyVal or an alias of it)
761769 // The error message 'EnumMayNotBeValueClassesID' will take care of generating the error message (See #22236)
762770 if (clazz.isDerivedValueClass && ! clazz.isEnumAnonymClass) {
763- val parentOpt = cdef.rhs match {
764- case impl : Template =>
765- impl.parents.headOption
766- case _ => None
767- }
768- val isExtendingAliasOfAnyVal = parentOpt.exists { parent =>
769- parent.symbol.isAliasType && parent.tpe.nn.dealias =:= defn.AnyValType
770- }
771-
772771 if (clazz.is(Trait ))
773772 report.error(CannotExtendAnyVal (clazz), clazz.srcPos)
774773 if clazz.is(Module ) then
@@ -779,8 +778,9 @@ object Checking {
779778 report.error(ValueClassesMayNotBeAbstract (clazz), clazz.srcPos)
780779 if (! clazz.isStatic)
781780 report.error(ValueClassesMayNotBeContainted (clazz), clazz.srcPos)
782- if (isExtendingAliasOfAnyVal)
783- report.error(ValueClassCannotExtendAliasOfAnyVal (clazz, parentOpt.get.symbol), clazz.srcPos)
781+
782+ checkParentIsNotAnyValAlias()
783+
784784 if (isDerivedValueClass(underlyingOfValueClass(clazz.asClass).classSymbol))
785785 report.error(ValueClassesMayNotWrapAnotherValueClass (clazz), clazz.srcPos)
786786 else {
0 commit comments