Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

SI-6896, spurious warning with overloaded main.

Make sure there's no legit main signature before issuing
any warnings about missing main methods.
  • Loading branch information...
commit a6ce037f9647615192e4dc1dd3162c0fe0a4d132 1 parent ca98602
@paulp paulp authored
View
24 src/compiler/scala/tools/nsc/backend/jvm/GenJVMASM.scala
@@ -78,17 +78,19 @@ trait GenJVMASM {
failNoForwarder("companion is a trait")
// Now either succeeed, or issue some additional warnings for things which look like
// attempts to be java main methods.
- else possibles exists { m =>
- m.info match {
- case PolyType(_, _) =>
- fail("main methods cannot be generic.")
- case MethodType(params, res) =>
- if (res.typeSymbol :: params exists (_.isAbstractType))
- fail("main methods cannot refer to type parameters or abstract types.", m.pos)
- else
- isJavaMainMethod(m) || fail("main method must have exact signature (Array[String])Unit", m.pos)
- case tp =>
- fail("don't know what this is: " + tp, m.pos)
+ else (possibles exists isJavaMainMethod) || {
+ possibles exists { m =>
+ m.info match {
+ case PolyType(_, _) =>
+ fail("main methods cannot be generic.")
+ case MethodType(params, res) =>
+ if (res.typeSymbol :: params exists (_.isAbstractType))
+ fail("main methods cannot refer to type parameters or abstract types.", m.pos)
+ else
+ isJavaMainMethod(m) || fail("main method must have exact signature (Array[String])Unit", m.pos)
+ case tp =>
+ fail("don't know what this is: " + tp, m.pos)
+ }
}
}
}
View
1  test/files/pos/t6896.flags
@@ -0,0 +1 @@
+-Xfatal-warnings
View
7 test/files/pos/t6896.scala
@@ -0,0 +1,7 @@
+object TooManyMains {
+ def main(args: Array[String]): Unit = {
+ println("Hello, World!")
+ }
+ def main(a: Int, b: Int) = ???
+ def main(s: String, n: String) = ???
+}
Please sign in to comment.
Something went wrong with that request. Please try again.