From 4e488a60594664046c3449e1aa2239adca7a012e Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Fri, 29 Jul 2011 15:38:50 +0000 Subject: Added two new compiler options: -Ywarn-adapted-args // also included in -Xlint -Yno-adapted-args The former warns when a () is inserted or an argument list is implicitly tupled. The latter errors under the same conditions. Using these options I found several bugs in the distribution which would otherwise be nearly impossible to spot. These bugs were innocuous (I think) but similar bugs could easily be (and have been) otherwise. Certain particularly threatening scenarios are at minimum warned about regardless of options given. Closes SI-4851, no review. --- test/files/neg/bug4851.check | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/files/neg/bug4851.check (limited to 'test/files/neg/bug4851.check') diff --git a/test/files/neg/bug4851.check b/test/files/neg/bug4851.check new file mode 100644 index 0000000000..8011350f23 --- /dev/null +++ b/test/files/neg/bug4851.check @@ -0,0 +1,43 @@ +S.scala:2: error: Adapting argument list by inserting (): leaky (Object-receiving) target makes this especially dangerous. + signature: J(x: Any): J + given arguments: + after adaptation: new J((): Unit) + val x1 = new J + ^ +S.scala:3: error: Adapting argument list by inserting (): leaky (Object-receiving) target makes this especially dangerous. + signature: J(x: Any): J + given arguments: + after adaptation: new J((): Unit) + val x2 = new J() + ^ +S.scala:4: error: Adapting argument list by creating a 5-tuple: this may not be what you want. + signature: J(x: Any): J + given arguments: 1, 2, 3, 4, 5 + after adaptation: new J((1, 2, 3, 4, 5): (Int, Int, Int, Int, Int)) + val x3 = new J(1, 2, 3, 4, 5) + ^ +S.scala:6: error: Adapting argument list by creating a 3-tuple: this may not be what you want. + signature: Some.apply[A](x: A): Some[A] + given arguments: 1, 2, 3 + after adaptation: Some((1, 2, 3): (Int, Int, Int)) + val y1 = Some(1, 2, 3) + ^ +S.scala:7: error: Adapting argument list by creating a 3-tuple: this may not be what you want. + signature: Some(x: A): Some[A] + given arguments: 1, 2, 3 + after adaptation: new Some((1, 2, 3): (Int, Int, Int)) + val y2 = new Some(1, 2, 3) + ^ +S.scala:9: error: Adapting argument list by inserting (): this is unlikely to be what you want. + signature: J2[T](x: T): J2[T] + given arguments: + after adaptation: new J2((): Unit) + val z1 = new J2 + ^ +S.scala:10: error: Adapting argument list by inserting (): this is unlikely to be what you want. + signature: J2[T](x: T): J2[T] + given arguments: + after adaptation: new J2((): Unit) + val z2 = new J2() + ^ +7 errors found -- cgit v1.2.3