aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/CollectEntryPoints.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-25 13:07:38 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-25 13:07:38 +0100
commitee29f47806858766b4010fb254df99cd0bb14d4d (patch)
tree6ec684d12dedb709cc6338e7e7407443f089a6b0 /src/dotty/tools/backend/jvm/CollectEntryPoints.scala
parentc6792189ff2075ac8b90efc7fad42aafd6a7b67e (diff)
downloaddotty-ee29f47806858766b4010fb254df99cd0bb14d4d.tar.gz
dotty-ee29f47806858766b4010fb254df99cd0bb14d4d.tar.bz2
dotty-ee29f47806858766b4010fb254df99cd0bb14d4d.zip
Make CollectEntryPoints stable against type aliases.
Diffstat (limited to 'src/dotty/tools/backend/jvm/CollectEntryPoints.scala')
-rw-r--r--src/dotty/tools/backend/jvm/CollectEntryPoints.scala16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/dotty/tools/backend/jvm/CollectEntryPoints.scala b/src/dotty/tools/backend/jvm/CollectEntryPoints.scala
index 802100bf2..734890daa 100644
--- a/src/dotty/tools/backend/jvm/CollectEntryPoints.scala
+++ b/src/dotty/tools/backend/jvm/CollectEntryPoints.scala
@@ -48,14 +48,22 @@ class CollectEntryPoints extends MiniPhaseTransform {
}
object CollectEntryPoints{
+ def isJavaMainMethod(sym: Symbol)(implicit ctx: Context) = {
+ val d = ctx.definitions
+ val StringType = d.StringType
+
+ (sym.name == nme.main) && (sym.info match {
+ case r@MethodType(_, List(d.ArrayType(t))) =>
+ (t.widenDealias =:= StringType) && (
+ r.resultType.widenDealias =:= d.UnitType)
+ case _ => false
+ })
+ }
+
def isJavaEntyPoint(sym: Symbol)(implicit ctx: Context): Boolean = {
import Types.MethodType
val d = ctx.definitions
val StringType = d.StringType
- def isJavaMainMethod(sym: Symbol) = (sym.name == nme.main) && (toDenot(sym).info match {
- case r@ MethodType(_, List(d.ArrayType(StringType))) => r.resultType eq d.UnitType
- case _ => false
- })
// The given class has a main method.
def hasJavaMainMethod(sym: Symbol): Boolean =
(toDenot(sym).info member nme.main).alternatives exists(x => isJavaMainMethod(x.symbol))