Skip to content

Commit d04fe10

Browse files
authored
Add another test case for generics (#322)
Add another test case for generics
2 parents db7f21d + a829c45 commit d04fe10

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,10 @@ case class IncompatibleResultTypeProblem(oldmeth: MemberInfo, newmeth: MemberInf
109109
*/
110110
case class IncompatibleSignatureProblem(oldmeth: MemberInfo, newmeth: MemberInfo) extends MemberProblem(oldmeth) {
111111
def description = affectedVersion => {
112-
oldmeth.methodString + " has a different signature in " + affectedVersion + " version, where it is " + newmeth.signature +
113-
" rather than " + oldmeth.signature
112+
// a method that takes no parameters and returns Object can have no signature
113+
def orNA(s: String) = if (s.isEmpty) "[N/A]" else s
114+
s"${oldmeth.methodString} has a different signature in $affectedVersion version, " +
115+
s"where it is ${orNA(newmeth.signature)} rather than ${orNA(oldmeth.signature)}"
114116
}
115117
}
116118

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
method source()scala.Tuple2 in class OptionPane has a different signature in new version, where it is ()Lscala/Tuple2<LMyPane<TA;>;Ljava/lang/String;>; rather than ()Lscala/Tuple2<Ljavax/swing/JOptionPane;Ljava/lang/String;>;
2+
method show()java.lang.Object in class OptionPane has a different signature in new version, where it is ()TA; rather than [N/A]
3+
method this(scala.Tuple2)Unit in class OptionPane has a different signature in new version, where it is (Lscala/Tuple2<LMyPane<TA;>;Ljava/lang/String;>;)V rather than (Lscala/Tuple2<Ljavax/swing/JOptionPane;Ljava/lang/String;>;)V
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
trait DialogSource[+A] { def show(): A }
2+
3+
final class OptionPane(val source: (javax.swing.JOptionPane, String)) extends DialogSource[Any] {
4+
def show(): Any = {
5+
val (pane, title) = source
6+
val jdlg = pane.createDialog(title)
7+
jdlg.setVisible(true)
8+
pane.getValue
9+
}
10+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
trait DialogSource[+A] { def show(): A }
2+
3+
final class OptionPane[A](val source: (MyPane[A], String)) extends DialogSource[A] {
4+
def show(): A = {
5+
val (pane, title) = source
6+
val jdlg = pane.peer.createDialog(title)
7+
jdlg.setVisible(true)
8+
pane.result
9+
}
10+
}
11+
12+
trait MyPane[A] {
13+
def peer: javax.swing.JOptionPane
14+
def result: A
15+
}

0 commit comments

Comments
 (0)