Skip to content

Commit b19ae44

Browse files
committed
Setup to ignore new experimental methods too
1 parent 0750167 commit b19ae44

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

core/src/main/scala/com/typesafe/tools/mima/core/TastyUnpickler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ object TastyUnpickler {
200200

201201
final case class ClsDef(name: TypeName, template: Template, annots: List[Annot]) extends Tree { def show = s"${annots.map("" + _ + " ").mkString}class $name$template" }
202202
final case class Template(meths: List[DefDef]) extends Tree { def show = s"${meths.map("\n " + _).mkString}" }
203-
final case class DefDef(name: Name, annots: List[Annot] = Nil) extends Tree { def show = s"${annots.map("" + _ + " ").mkString} def $name" }
203+
final case class DefDef(name: Name, annots: List[Annot] = Nil) extends Tree { def show = s"${annots.map("" + _ + " ").mkString}def $name" }
204204

205205
sealed trait Type extends Tree
206206
final case class UnknownType(tag: Int) extends Type { def show = s"UnknownType(${astTagToString(tag)})" }

core/src/main/scala/com/typesafe/tools/mima/lib/analyze/method/MethodChecker.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ private[analyze] object MethodChecker {
138138
private def checkDeferredMethodsProblems(oldclazz: ClassInfo, newclazz: ClassInfo): List[Problem] = {
139139
for {
140140
newmeth <- newclazz.deferredMethods.iterator
141+
if !newmeth.isExperimental
141142
problem <- oldclazz.lookupMethods(newmeth).find(_.descriptor == newmeth.descriptor) match {
142143
case None => Some(ReversedMissingMethodProblem(newmeth))
143144
case Some(oldmeth) if newclazz.isClass && oldmeth.isConcrete => Some(ReversedAbstractMethodProblem(newmeth))
@@ -158,6 +159,7 @@ private[analyze] object MethodChecker {
158159
newInheritedType <- diffInheritedTypes.iterator
159160
// if `newInheritedType` is a trait, then the trait's concrete methods should be counted as deferred methods
160161
newDeferredMethod <- newInheritedType.deferredMethodsInBytecode
162+
if !newDeferredMethod.isExperimental
161163
// checks that the newDeferredMethod did not already exist in one of the oldclazz supertypes
162164
if noInheritedMatchingMethod(oldclazz, newDeferredMethod)(_ => true) &&
163165
// checks that no concrete implementation of the newDeferredMethod is provided by one of the newclazz supertypes

0 commit comments

Comments
 (0)