diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/main1.check | 26 | ||||
-rw-r--r-- | test/files/neg/main1.flags | 1 | ||||
-rw-r--r-- | test/files/neg/main1.scala | 45 | ||||
-rw-r--r-- | test/pending/run/jar-version.scala | 11 |
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.") + } + } +} |