From ee29f47806858766b4010fb254df99cd0bb14d4d Mon Sep 17 00:00:00 2001 From: Dmitry Petrashko Date: Wed, 25 Mar 2015 13:07:38 +0100 Subject: Make CollectEntryPoints stable against type aliases. --- src/dotty/tools/backend/jvm/CollectEntryPoints.scala | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/dotty/tools/backend/jvm/CollectEntryPoints.scala') 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)) -- cgit v1.2.3