@@ -891,11 +891,15 @@ object RefChecks {
891
891
* can assume invariant refinement for case classes in `constrainPatternType`.
892
892
*/
893
893
def checkCaseClassInheritanceInvariant () =
894
- for (caseCls <- clazz.info.baseClasses.tail.find(_.is(Case )))
895
- for (baseCls <- caseCls.info.baseClasses.tail)
896
- if (baseCls.typeParams.exists(_.paramVarianceSign != 0 ))
897
- for (problem <- variantInheritanceProblems(baseCls, caseCls, " non-variant" , " case " ))
898
- report.errorOrMigrationWarning(problem, clazz.srcPos, MigrationVersion .Scala2to3 )
894
+ for
895
+ caseCls <- clazz.info.baseClasses.tail.find(_.is(Case ))
896
+ baseCls <- caseCls.info.baseClasses.tail
897
+ if baseCls.typeParams.exists(_.paramVarianceSign != 0 )
898
+ problem <- variantInheritanceProblems(baseCls, caseCls, i " base $baseCls" , " case " )
899
+ withExplain = problem.appendExplanation:
900
+ """ Refining a basetype of a case class is not allowed.
901
+ |This is a limitation that enables better GADT constraints in case class patterns""" .stripMargin
902
+ do report.errorOrMigrationWarning(withExplain, clazz.srcPos, MigrationVersion .Scala2to3 )
899
903
checkNoAbstractMembers()
900
904
if (abstractErrors.isEmpty)
901
905
checkNoAbstractDecls(clazz)
@@ -924,7 +928,7 @@ object RefChecks {
924
928
for {
925
929
cls <- clazz.info.baseClasses.tail
926
930
if cls.paramAccessors.nonEmpty && ! mixins.contains(cls)
927
- problem <- variantInheritanceProblems(cls, clazz.asClass.superClass, " parameterized" , " super" )
931
+ problem <- variantInheritanceProblems(cls, clazz.asClass.superClass, i " parameterized base $cls " , " super" )
928
932
}
929
933
report.error(problem, clazz.srcPos)
930
934
}
@@ -947,7 +951,7 @@ object RefChecks {
947
951
if (combinedBT =:= thisBT) None // ok
948
952
else
949
953
Some (
950
- em """ illegal inheritance: $clazz inherits conflicting instances of $baseStr base $baseCls .
954
+ em """ illegal inheritance: $clazz inherits conflicting instances of $baseStr.
951
955
|
952
956
| Direct basetype: $thisBT
953
957
| Basetype via $middleStr$middle: $combinedBT""" )
0 commit comments