summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2017-02-28 14:14:11 -0800
committerAdriaan Moors <adriaan@lightbend.com>2017-03-02 11:17:02 -0800
commit615849058b5452b9d54ac152a1380ca7f81998c9 (patch)
treeab2f9cec9a7b49e40f8fdaf8968619993762e6f6 /test
parent575a668a38014f25cb4930ef2b1991a861ba558a (diff)
downloadscala-615849058b5452b9d54ac152a1380ca7f81998c9.tar.gz
scala-615849058b5452b9d54ac152a1380ca7f81998c9.tar.bz2
scala-615849058b5452b9d54ac152a1380ca7f81998c9.zip
Improvements based on reviews by Lukas & Jason
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/userdefined_apply.check20
-rw-r--r--test/files/neg/userdefined_apply.scala26
-rw-r--r--test/files/pos/userdefined_apply.scala18
3 files changed, 60 insertions, 4 deletions
diff --git a/test/files/neg/userdefined_apply.check b/test/files/neg/userdefined_apply.check
index ca0154885d..c8c8976f5f 100644
--- a/test/files/neg/userdefined_apply.check
+++ b/test/files/neg/userdefined_apply.check
@@ -1,13 +1,25 @@
userdefined_apply.scala:3: error: overloaded method apply needs result type
private def apply(x: Int) = if (x > 0) new ClashOverloadNoSig(x) else apply("")
^
-userdefined_apply.scala:12: error: overloaded method apply needs result type
+userdefined_apply.scala:14: error: overloaded method apply needs result type
private def apply(x: Int) = if (x > 0) ClashRecNoSig(1) else ???
^
-userdefined_apply.scala:19: error: overloaded method apply needs result type
+userdefined_apply.scala:21: error: overloaded method apply needs result type
private def apply(x: Boolean) = if (x) NoClashNoSig(1) else ???
^
-userdefined_apply.scala:26: error: overloaded method apply needs result type
+userdefined_apply.scala:28: error: overloaded method apply needs result type
private def apply(x: Boolean) = if (x) NoClashOverload(1) else apply("")
^
-four errors found
+userdefined_apply.scala:45: error: recursive method apply needs result type
+case class NoClashNoSigPoly private(x: Int)
+ ^
+userdefined_apply.scala:39: error: NoClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) NoClashNoSigPoly(1) else ???
+ ^
+userdefined_apply.scala:57: error: recursive method apply needs result type
+case class ClashNoSigPoly private(x: Int)
+ ^
+userdefined_apply.scala:51: error: ClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) ClashNoSigPoly(1) else ???
+ ^
+8 errors found
diff --git a/test/files/neg/userdefined_apply.scala b/test/files/neg/userdefined_apply.scala
index 1f2aff6e82..0a0d960b39 100644
--- a/test/files/neg/userdefined_apply.scala
+++ b/test/files/neg/userdefined_apply.scala
@@ -8,6 +8,8 @@ object ClashOverloadNoSig {
case class ClashOverloadNoSig private(x: Int)
object ClashRecNoSig {
+ // TODO: status quo is that the error refers to an overloaded method, which is actually recursive
+ // (we should have unlinked the symbol in the `if(suppress)` part of `applyUnapplyMethodCompleter`)
// error: recursive method apply needs result type
private def apply(x: Int) = if (x > 0) ClashRecNoSig(1) else ???
}
@@ -29,3 +31,27 @@ object NoClashOverload {
}
case class NoClashOverload private(x: Int)
+
+
+class BaseNCNSP[T] {
+ // TODO: suppress the following error
+ // error: NoClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) NoClashNoSigPoly(1) else ???
+}
+
+object NoClashNoSigPoly extends BaseNCNSP[Boolean]
+// TODO: position error at definition of apply in superclass instead of on case clss
+// error: recursive method apply needs result type
+case class NoClashNoSigPoly private(x: Int)
+
+
+class BaseCNSP[T] {
+ // TODO: suppress the following error
+ // error: ClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) ClashNoSigPoly(1) else ???
+}
+
+object ClashNoSigPoly extends BaseCNSP[Int]
+// TODO: position error at definition of apply in superclass instead of on case clss
+// error: recursive method apply needs result type
+case class ClashNoSigPoly private(x: Int)
diff --git a/test/files/pos/userdefined_apply.scala b/test/files/pos/userdefined_apply.scala
index ca563f1dc5..e29f9f5141 100644
--- a/test/files/pos/userdefined_apply.scala
+++ b/test/files/pos/userdefined_apply.scala
@@ -34,3 +34,21 @@ object NoClashOverload {
def apply(x: String): NoClashOverload = ???
}
case class NoClashOverload private (x: Int)
+
+
+
+class BaseNCP[T] {
+ // error: overloaded method apply needs result type
+ def apply(x: T): NoClashPoly = if (???) NoClashPoly(1) else ???
+}
+
+object NoClashPoly extends BaseNCP[Boolean]
+case class NoClashPoly private(x: Int)
+
+
+class BaseCP[T] {
+ // error: overloaded method apply needs result type
+ def apply(x: T): ClashPoly = if (???) ClashPoly(1) else ???
+}
+object ClashPoly extends BaseCP[Int]
+case class ClashPoly private(x: Int)