summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/main1.check26
-rw-r--r--test/files/neg/main1.flags1
-rw-r--r--test/files/neg/main1.scala45
-rw-r--r--test/pending/run/jar-version.scala11
4 files changed, 83 insertions, 0 deletions
diff --git a/test/files/neg/main1.check b/test/files/neg/main1.check
new file mode 100644
index 0000000000..734c78e54d
--- /dev/null
+++ b/test/files/neg/main1.check
@@ -0,0 +1,26 @@
+main1.scala:3: error: Foo has a main method, but foo1.Foo will not be a runnable program.
+ Its companion is a trait, which means no static forwarder can be generated.
+
+ object Foo { // companion is trait
+ ^
+main1.scala:10: error: Foo has a main method, but foo2.Foo will not be a runnable program.
+ Its companion contains its own main method, which means no static forwarder can be generated.
+
+ object Foo { // companion has its own main
+ ^
+main1.scala:22: error: Foo has a main method, but foo3.Foo will not be a runnable program.
+ Its companion contains its own main method (implementation restriction: no main is allowed, regardless of signature), which means no static forwarder can be generated.
+
+ object Foo { // Companion contains main, but not an interfering main.
+ ^
+main1.scala:31: error: Foo has a main method, but foo4.Foo will not be a runnable program.
+ Its companion contains its own main method (implementation restriction: no main is allowed, regardless of signature), which means no static forwarder can be generated.
+
+ object Foo extends Foo { // Inherits main from the class
+ ^
+main1.scala:39: error: Foo has a main method, but foo5.Foo will not be a runnable program.
+ Its companion contains its own main method (implementation restriction: no main is allowed, regardless of signature), which means no static forwarder can be generated.
+
+ object Foo extends Foo { // Overrides main from the class
+ ^
+5 errors found
diff --git a/test/files/neg/main1.flags b/test/files/neg/main1.flags
new file mode 100644
index 0000000000..e8fb65d50c
--- /dev/null
+++ b/test/files/neg/main1.flags
@@ -0,0 +1 @@
+-Xfatal-warnings \ No newline at end of file
diff --git a/test/files/neg/main1.scala b/test/files/neg/main1.scala
new file mode 100644
index 0000000000..2b5551ac38
--- /dev/null
+++ b/test/files/neg/main1.scala
@@ -0,0 +1,45 @@
+// negatives
+package foo1 {
+ object Foo { // companion is trait
+ def main(args: Array[String]): Unit = ()
+ }
+ trait Foo
+}
+
+package foo2 {
+ object Foo { // companion has its own main
+ def main(args: Array[String]): Unit = ()
+ }
+ class Foo {
+ def main(args: Array[String]): Unit = ()
+ }
+}
+
+// these should all be made to work, but are negatives for now
+// because forwarders need more work.
+
+package foo3 {
+ object Foo { // Companion contains main, but not an interfering main.
+ def main(args: Array[String]): Unit = ()
+ }
+ class Foo {
+ def main(args: Int): Unit = ()
+ }
+}
+
+package foo4 {
+ object Foo extends Foo { // Inherits main from the class
+ }
+ class Foo {
+ def main(args: Array[String]): Unit = ()
+ }
+}
+
+package foo5 {
+ object Foo extends Foo { // Overrides main from the class
+ override def main(args: Array[String]): Unit = ()
+ }
+ class Foo {
+ def main(args: Array[String]): Unit = ()
+ }
+}
diff --git a/test/pending/run/jar-version.scala b/test/pending/run/jar-version.scala
new file mode 100644
index 0000000000..b79dfe733d
--- /dev/null
+++ b/test/pending/run/jar-version.scala
@@ -0,0 +1,11 @@
+import scala.util.Properties._
+import scala.tools.nsc.util.ClassPath._
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ infoFor(this).jarManifestMainAttrs get ScalaCompilerVersion match {
+ case Some(v) => println("I was built by scala compiler version " + v)
+ case _ => println("I was not apprised of which scala compiler version built me.")
+ }
+ }
+}