diff options
author | Paul Phillips <paulp@improving.org> | 2012-12-31 02:07:58 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-12-31 02:11:06 -0800 |
commit | a6ce037f9647615192e4dc1dd3162c0fe0a4d132 (patch) | |
tree | e4318b51064d060c00b1a567013da94b32e93f38 /src | |
parent | ca98602e8243062c8e1e86afe954c48edc09cbad (diff) | |
download | scala-a6ce037f9647615192e4dc1dd3162c0fe0a4d132.tar.gz scala-a6ce037f9647615192e4dc1dd3162c0fe0a4d132.tar.bz2 scala-a6ce037f9647615192e4dc1dd3162c0fe0a4d132.zip |
SI-6896, spurious warning with overloaded main.
Make sure there's no legit main signature before issuing
any warnings about missing main methods.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVMASM.scala | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVMASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVMASM.scala index 49c0fa2757..540935fd57 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVMASM.scala +++ b/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) + } } } } |